// Copyright 2016 lazy-static.rs Developers // // Licensed under the Apache License, Version 2.0, or the MIT license , at your option. This file may not be // copied, modified, or distributed except according to those terms. extern crate spin; use self::spin::Once; pub struct Lazy(Once); impl Lazy { pub const INIT: Self = Lazy(Once::INIT); #[inline(always)] pub fn get(&'static self, builder: F) -> &T where F: FnOnce() -> T { self.0.call_once(builder) } } #[macro_export] #[doc(hidden)] macro_rules! __lazy_static_create { ($NAME:ident, $T:ty) => { static $NAME: $crate::lazy::Lazy<$T> = $crate::lazy::Lazy::INIT; } }