我正在尝试使用线程在Rust中同时使用和更改变量的值。
有些Box
和Mutex
之类的东西可以共享对象,但是这些似乎都无法解决我的问题。我想访问一个变量并更改一个值,而另一方面,将该变量用于其他内容,例如下面的代码。
use std::thread;
fn main() {
let mut val = 0;
thread::spawn(|| {
let mut i = 0;
loop {
val = i;
i += 1;
}
});
loop {
println!("val: {}", val);
}
}
在C语言中,这很容易实现,并且可以轻松打印出i
,但是由于Rust中的所有权管理技术,上述线程获得了所有权并且无法编译代码。 / p>
有什么办法可以解决这个问题?