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
。