提问人:GirkovArpa 提问时间:8/9/2021 更新时间:8/9/2021 访问量:354
如何改变静态引用?
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
答:
4赞
Kevin Reid
8/9/2021
#1
您的代码只需要一个:*
*MY_GLOBAL.lock().unwrap() += 1;
的结果是一个 ,正如编译器所指出的,它取消了对 的引用,因此要修改包含的 useize,您需要取消引用。MY_GLOBAL.lock().unwrap()
MutexGuard<'_, usize>
usize
*
Rust 通常会在需要时自动插入引用和取消引用(特别是对于方法调用),但对于赋值,您必须显式取消引用,以便左侧正是您打算替换的左侧。usize
评论