mut_static
Provides a struct to help create mutable statics with lazy_static.
(crates.io)
Quickstart
To create a mutable static simply put your lazy_static object inside of a MutStatic:
use mut_static::MutStatic;
use std::mem;
lazy_static! {
pub static ref MY_OBJECT: MutStatic<MyObject> = {
MutStatic::new()
};
}
lazy_static! {
pub static ref MY_OBJECT: MutStatic<MyObject> = {
MutStatic::new_with_contents(MyObject::new())
};
}
fn main() {
MY_OBJECT.set(MyObject::new()).unwrap();
{
let my_object = MY_OBJECT.read().unwrap();
let my_object = my_object.deref();
my_object.use();
}
{
let mut my_object = MY_OBJECT.write().unwrap();
let mut my_object = my_object.deref_mut();
my_object.use_mut();
mem::replace(my_object, MyObject::new());
}
}