struct DataItem {
lv: i32,
rate: f32,
fall: Option<i32>,
}
let data : Vec<DataItem> = vec![
DataItem {
lv: 1,
rate: 1.0,
fall: None,
},
DataItem {
lv: 2,
rate: 1.0,
fall: None,
}
];
我想让 data
是全局变量方便调用而不是在函数中传来传去,但 const
和 static
关键字好像都不支持。有什么好办法吗?
如果是下面这种
遇到的问题是:
let mut item = &mut DATA[0];
| ^^^^^^^^^^^^
|
= note: each usage of a
const
item creates a new temporary= note: the mutable reference will refer to this temporary, not the original
const
item`如果使用static则不能可变引用
DATA
,因为DATA
item is an immutable static item换一种方式
//Output : DataItem { lv: 3, rate: 1.0, fall: None }
把全局变量设置为懒加载(lazy),可在多个线程访问(sync),线程安全(mutex) => 会更好
上面的代码是从once_cell-sync-lazy
抄的 😂 还有更多值得一看
https://docs.rs/once_cell/latest/once_cell/