0
lazy_static! {
  static ref MY_GLOBAL: Mutex<usize> = Mutex::new(100);
}
MY_GLOBAL.lock().unwrap() += 1;

这段代码给了我这些错误:

cannot use `+=` on type `MutexGuard<'_, usize>`
cannot assign to this expression

我如何变异MY_GLOBAL

4

1 回答 1

3

您的代码只需要一个*

*MY_GLOBAL.lock().unwrap() += 1;

正如编译器所指出的,结果MY_GLOBAL.lock().unwrap()是 a MutexGuard<'_, usize>,它取消引用a usize,因此要修改包含的 usize 您需要取消引用*

Rust 通常会在需要时自动插入引用和取消引用(特别是对于方法调用),但是对于分配,您必须显式取消引用,以便左侧正是usize您打算替换的。

于 2021-08-09T04:02:14.930 回答