#lazy-evaluation #immutability #cell #init #cache #send-sync

已删除 lazyonce

请使用 std::cell::OnceCell 代替

2.0.1 2024年4月21日
1.0.0 2019年7月20日
0.3.0 2018年12月9日
0.2.0 2018年6月14日

#35 in #lazy

CC0 许可证

7KB
114

这是过时的。

有标准库中的 OnceCell,现在也有更好的crate。


lib.rs:

懒初始化的包装类型

存储“不可变”单元,当首次访问时计算其值。允许作为实现细节进行懒初始化,而无需公开任何可变方法。

它类似于 lazy_static,但不是静态的。它类似于 std::sync::Once,但持有值。

它是线程安全的(SendSync)。

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