Struct spin::lazy::Lazy [−][src]
This is supported on crate feature
lazy
only.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
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.
Trait Implementations
Auto Trait Implementations
impl<T, F = fn() -> T, R = Spin> !RefUnwindSafe for Lazy<T, F, R>
impl<T, F, R> UnwindSafe for Lazy<T, F, R> where
F: UnwindSafe,
R: UnwindSafe,
T: UnwindSafe,