pub struct Lazy<T, F = fn() -> T, R = Spin> { /* private fields */ }
Expand description
A value which is initialized on the first access.
This type is a thread-safe Lazy
, and can be used in statics.
Examples
use std::collections::HashMap;
use spin::Lazy;
static HASHMAP: Lazy<HashMap<i32, String>> = Lazy::new(|| {
println!("initializing");
let mut m = HashMap::new();
m.insert(13, "Spica".to_string());
m.insert(74, "Hoyten".to_string());
m
});
fn main() {
println!("ready");
std::thread::spawn(|| {
println!("{:?}", HASHMAP.get(&13));
}).join().unwrap();
println!("{:?}", HASHMAP.get(&74));
// Prints:
// ready
// initializing
// Some("Spica")
// Some("Hoyten")
}
Implementations§
source§impl<T, F, R> Lazy<T, F, R>
impl<T, F, R> Lazy<T, F, R>
sourcepub fn as_mut_ptr(&self) -> *mut T
pub fn as_mut_ptr(&self) -> *mut T
Retrieves a mutable pointer to the inner data.
This is especially useful when interfacing with low level code or FFI where the caller explicitly knows that it has exclusive access to the inner data. Note that reading from this pointer is UB until initialized or directly written to.