blob: 217f7592aa131cb287d7d43bb335d44dac5b184c [file] [log] [blame]
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)
}
}