2.0.1 |
|
---|---|
1.0.0 |
|
0.3.0 |
|
0.2.0 |
|
#35 in #lazy
7KB
114 行
这是过时的。
有标准库中的 OnceCell,现在也有更好的crate。
lib.rs
:
懒初始化的包装类型
存储“不可变”单元,当首次访问时计算其值。允许作为实现细节进行懒初始化,而无需公开任何可变方法。
它类似于 lazy_static
,但不是静态的。它类似于 std::sync::Once
,但持有值。
它是线程安全的(Send
和 Sync
)。
use lazyonce::LazyOnce;
struct Oracle {
answer: LazyOnce<u32>,
}
impl Oracle {
pub fn get_answer(&self) -> &u32 {
self.answer.get(|| think()) // think() is called only once
}
}
依赖关系
~0.4–5MB
~11K SLoC