如何改变静态引用大小?

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