9得票1回答
不需要克隆的情况下,是否可以使用线程共享数据?

当我将工作委派给线程时,通常会有一些数据比如下面的numbers会比所有线程都存活得更久: use std::thread; fn main() { let numbers = vec![1, 2, 3]; let thread_a = thread::spawn(|| ...

9得票2回答
能否将结构体的部分作为可变的借用,而将其他部分作为不可变的借用?

如果结构体的字段是私有的,是否可能将结构体的一部分作为可变的借用,另一部分作为不可变的借用。 fn main() { let mut ecs = EntityComponentSystem::new(); for e_id in ecs.get_entities_with_...

9得票2回答
为什么我不能从枚举中可变地借用基本类型?

我希望能够获取到在Foo枚举中被包裹在Bar中的usize的引用(不可变和可变都可以): use Foo::*; #[derive(Debug, PartialEq, Clone)] pub enum Foo { Bar(usize) } impl Foo { /* th...

14得票1回答
如何在从成员函数调用的闭包中修改self?

我正在尝试计算合法的国际象棋走法,但是在满足借贷检查器方面遇到了问题。我有一个实现了这些方法的结构体Chess(非重要代码由...代替):// internal iterator over (possibly not legal) moves fn get_moves<F>(&am...

7得票1回答
Rust中的树遍历与借用检查器

我尝试在Rust中实现树形结构,遍历并修改它,但是遇到了借用检查器的问题。我的设置更多或少如下: #![feature(slicing_syntax)] use std::collections::HashMap; #[deriving(PartialEq, Eq, Hash)] str...

7得票1回答
你能在不使用显式引用或所有权移动的情况下,在结构体上实现数学运算吗?

我不知道如何在结构体上实现干净的数学运算,而不需要复制每个结构体值。 如果你想在结构体上执行数学运算,可以编写以下代码: use std::ops::*; struct Num { i: i32, } impl Add for Num { type Output = N...

14得票1回答
这个错误是由编译器对RefCell的特殊知识引起的吗?

fn works<'a>(foo: &Option<&'a mut String>, s: &'a mut String) {} fn error<'a>(foo: &RefCell<Option<&'a ...

8得票2回答
在调用一个借用为不可变的闭包时,在循环中不能作为可变借用。

这是代码: fn test(){ let mut numbers = vec![2]; let f = || { for _ in numbers.iter(){ } false }; while false ...

9得票1回答
在存在可变引用的情况下传递不可变引用

我有一个for循环,会遍历一个Point结构体的切片。在循环中,Point的一些字段将被修改,因此包含循环的函数需要对切片进行可变引用。 当我需要将一个(不可变)引用传递给在可变引用上迭代的for循环内部的函数时,问题就出现了: #[derive(Debug)] struct Point ...

30得票1回答
由于在函数参数中也被借用为可变引用,因此无法作为不可变引用进行借用。

这里发生了什么(playground)? struct Number { num: i32 } impl Number { fn set(&mut self, new_num: i32) { self.num = new_num; } ...