use once_cell::sync::OnceCell; | |
/// Lazily initialized static variable. | |
/// | |
/// Used in generated code. | |
/// | |
/// Currently a wrapper around `once_cell`s `OnceCell`. | |
pub struct Lazy<T> { | |
once_cell: OnceCell<T>, | |
} | |
impl<T> Lazy<T> { | |
/// Uninitialized state. | |
pub const fn new() -> Lazy<T> { | |
Lazy { | |
once_cell: OnceCell::new(), | |
} | |
} | |
/// Lazily initialize the value. | |
pub fn get(&self, f: impl FnOnce() -> T) -> &T { | |
self.once_cell.get_or_init(f) | |
} | |
} |