1 个不稳定版本
0.1.0 | 2023年11月28日 |
---|
#6 in #macro-based
5KB
安装
cargo add slazy
或在你的 Cargo.toml
中添加以下内容
[dependencies]
slazy = "*"
示例
use slazy::slazy;
slazy! {
pub FOO: u32 = {
println!("Evaluating FOO");
42
};
BAR: u32 = 1337;
}
println!("FOO: {}", *FOO); // Evaluates FOO
println!("{}", *FOO); // Gets the value of FOO without evaluating it again
println!("{}", *BAR); // Evaluates BAR
线程安全
[!WARNING] 如果你想在多线程环境中使用 SLazy,应在创建任何线程之前初始化惰性静态变量。这是因为惰性静态变量在某些场景下可能不是线程安全的,可能因为数据竞争。
示例
use slazy::{slazy, init};
slazy! {
pub FOO: u32 = {
println!("Evaluating FOO");
42
};
}
init!(FOO); // or `_ = *FOO;`
std::thread::spawn(|| {
println!("{}", *FOO); // Safe to use FOO in this thread
});
许可证
本项目采用 MIT 许可证。