如何改变静态引用大小?
How to mutate static ref usize?
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
,因此要修改包含 usize 你需要取消引用 *
.
Rust 通常会在需要时自动插入引用和取消引用(特别是对于方法调用),但对于赋值,您必须显式取消引用,以便左侧正是您要替换的 usize
。
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
,因此要修改包含 usize 你需要取消引用 *
.
Rust 通常会在需要时自动插入引用和取消引用(特别是对于方法调用),但对于赋值,您必须显式取消引用,以便左侧正是您要替换的 usize
。