#static #lazy-static #mut

mut_static

提供一种结构体,帮助使用 lazy_static 创建可变静态变量。

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

Download history 416/week @ 2024-03-07 498/week @ 2024-03-14 524/week @ 2024-03-21 458/week @ 2024-03-28 616/week @ 2024-04-04 818/week @ 2024-04-11 659/week @ 2024-04-18 256/week @ 2024-04-25 319/week @ 2024-05-02 708/week @ 2024-05-09 641/week @ 2024-05-16 487/week @ 2024-05-23 546/week @ 2024-05-30 239/week @ 2024-06-06 482/week @ 2024-06-13 302/week @ 2024-06-20

1,611 个月下载量
用于 26 个 crate (13 直接使用)

MIT 许可证

10KB
224

mut_static

提供一种结构体,帮助使用 lazy_static 创建可变静态变量。

(crates.io)

快速入门

要创建一个可变静态变量,只需将您的 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