7 个版本 (主要破坏性更新)
使用旧的 Rust 2015
5.0.0 | 2017年5月13日 |
---|---|
4.0.0 | 2017年2月10日 |
3.0.0 | 2017年1月2日 |
2.0.0 | 2016年12月31日 |
0.1.0 | 2016年12月19日 |
#6 in #lazy-static
1,611 个月下载量
用于 26 个 crate (13 直接使用)
10KB
224 行
mut_static
提供一种结构体,帮助使用 lazy_static 创建可变静态变量。
快速入门
要创建一个可变静态变量,只需将您的 lazy_static 对象放入 MutStatic
中。
use mut_static::MutStatic;
use std::mem;
use std::ops::DerefMut;
pub struct MyStruct { value: usize }
impl MyStruct {
pub fn new(value: usize) -> Self {
MyStruct{ value: value }
}
pub fn get_value(&self) -> usize {
self.value
}
pub fn set_value(&mut self, value: usize) {
self.value = value
}
}
// Declaring a MutStatic
lazy_static! {
pub static ref MY_STRUCT: MutStatic<MyStruct> = {
MutStatic::new()
};
}
// Declaring a MutStatic which already has data
lazy_static! {
pub static ref MY_STRUCT_PRESET: MutStatic<MyStruct> = {
MutStatic::from(MyStruct::new(0))
};
}
fn main() {
// Setting a MutStatic
MY_STRUCT.set(MyStruct::new(0)).unwrap();
// Using a MutStatic
{
let my_struct = MY_STRUCT.read().unwrap();
assert!(my_struct.get_value() == 0);
}
// Using a MutStatic mutably
{
let mut my_struct = MY_STRUCT.write().unwrap();
my_struct.set_value(1);
assert!(my_struct.get_value() == 1);
}
// Resetting a MutStatic
{
let mut my_struct = MY_STRUCT.write().unwrap();
mem::replace(my_struct.deref_mut(), MyStruct::new(2));
assert!(my_struct.get_value() == 2);
}
}
依赖项
~71KB