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
sourceimpl<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.
sourceimpl<T, F: FnOnce() -> T, R: RelaxStrategy> Lazy<T, F, R>
impl<T, F: FnOnce() -> T, R: RelaxStrategy> Lazy<T, F, R>
Trait Implementations
sourceimpl<T, F: FnOnce() -> T, R: RelaxStrategy> Deref for Lazy<T, F, R>
impl<T, F: FnOnce() -> T, R: RelaxStrategy> Deref for Lazy<T, F, R>
impl<T, F: Send> Sync for Lazy<T, F> where
Once<T>: Sync,
Auto Trait Implementations
impl<T, F = fn() -> T, R = Spin> !RefUnwindSafe for Lazy<T, F, R>
impl<T, F, R> Send for Lazy<T, F, R> where
F: Send,
T: Send,
impl<T, F = fn() -> T, R = Spin> !Sync for Lazy<T, F, R>
impl<T, F, R> Unpin for Lazy<T, F, R> where
F: Unpin,
R: Unpin,
T: Unpin,
impl<T, F, R> UnwindSafe for Lazy<T, F, R> where
F: UnwindSafe,
R: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more