Rust 无法借用“&;中的数据”向量推送中的可变引用

Rust 无法借用“&;中的数据”向量推送中的可变引用,rust,Rust,我正在学习生锈,但我不断地遇到这个错误,在花时间试图解决它之后,我不知道如何解决它 error[E0596]: cannot borrow data in a `&` reference as mutable --> src/main.rs:72:13 | 72 | income_list.push( 1); | ^^^^^^^^^^^ cannot borrow as mutable 我使用lazy_sta

我正在学习生锈,但我不断地遇到这个错误,在花时间试图解决它之后,我不知道如何解决它

    error[E0596]: cannot borrow data in a `&` reference as mutable
  --> src/main.rs:72:13
   |
72 |             income_list.push( 1);
   |             ^^^^^^^^^^^ cannot borrow as mutable
我使用lazy_static创建了一个类型为
u64
的全局变量:

lazy_static! {
    static ref expense_list: Vec<i64> = Vec::new();
    static ref income_list: Vec<u64> = Vec::new();
}
我不能推向量中的任何值,因为它会不断地抛出错误,根据我的理解,向量应该是一种没有固定大小的数组


我哪里错了?

您的全局变量是不可变的

如果您想要可变地访问那些
Vec
s,您必须将它们封装在允许的东西中,比如
Mutex
RwLock


但你应该听从@hellow的建议,重新考虑是否真的需要这些变量作为全局变量。听起来好像您正试图将程序的状态放入全局变量中,而实际上没有必要这样做。

全局变量是不应该使用的。为什么不使用局部变量呢?@hellow你认为在主函数中声明局部变量然后在那里使用更好吗?是的!(!!!!!!!!!!). 将它们(可变地)借用给需要它们的函数。全局变量有很多问题,例如多线程程序的安全访问。哦,好的,那就这样吧,谢谢!我一直使用全局变量,所以不使用它们是有意义的。