如何变异静态拒绝?


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突变?

您的代码只需要一个*:

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

MY_GLOBAL.lock().unwrap()的结果是一个MutexGuard<'_, usize>,正如编译器所指出的,其中解引用到一个usize,因此要修改包含的用法,您需要解引用*

Rust通常在需要的时候自动插入引用和解引用(特别是对于方法调用),但是对于赋值,你必须显式地解引用,这样左边就是你想要替换的usize