38 个版本 (9 个稳定版)
使用旧的 Rust 2015
1.5.0 | 2024 年 6 月 21 日 |
---|---|
1.4.0 | 2019 年 8 月 26 日 |
1.3.0 | 2019 年 2 月 27 日 |
1.2.0 | 2018 年 11 月 4 日 |
0.1.1 | 2014 年 11 月 23 日 |
#5 in Rust 模式
11,569,195 每月下载量
用于 44,830 个 crate(9,410 直接使用)
15KB
125 行
lazy-static.rs
一个用于在 Rust 中声明惰性计算的静态变量的宏。
使用此宏,可以拥有需要在运行时执行代码才能初始化的 static
变量。这包括任何需要堆分配的东西,如向量或哈希表,以及任何需要非 const 函数调用的计算。
最低支持的 rustc
1.40.0+
此版本已在 CI 中明确测试,并且只能在新的次要版本中升级。有关最低支持版本的所有更改将在发行说明中列出。
入门
lazy-static.rs 在 crates.io 上可用。建议您在那里查找最新发布的版本,以及最新文档的链接。
在最后一次更新此 README 时,最新发布的版本可以像这样使用
将以下依赖项添加到您的 Cargo 清单...
[dependencies]
lazy_static = "1.5.0"
...并查看 文档 了解如何使用它。
示例
use lazy_static::lazy_static;
use std::collections::HashMap;
lazy_static! {
static ref HASHMAP: HashMap<u32, &'static str> = {
let mut m = HashMap::new();
m.insert(0, "foo");
m.insert(1, "bar");
m.insert(2, "baz");
m
};
}
fn main() {
// First access to `HASHMAP` initializes it
println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());
// Any further access to `HASHMAP` just returns the computed value
println!("The entry for `1` is \"{}\".", HASHMAP.get(&1).unwrap());
}
标准库
现在可以使用 std::sync::OnceLock
在 Rust 的标准库中轻松复制此 crate 的功能。上面的示例也可以写成
use std::collections::HashMap;
use std::sync::OnceLock;
fn hashmap() -> &'static HashMap<u32, &'static str> {
static HASHMAP: OnceLock<HashMap<u32, &str>> = OnceLock::new();
HASHMAP.get_or_init(|| {
let mut m = HashMap::new();
m.insert(0, "foo");
m.insert(1, "bar");
m.insert(2, "baz");
m
})
}
fn main() {
// First access to `HASHMAP` initializes it
println!("The entry for `0` is \"{}\".", hashmap().get(&0).unwrap());
// Any further access to `HASHMAP` just returns the computed value
println!("The entry for `1` is \"{}\".", hashmap().get(&1).unwrap());
}
许可证
根据您的选择,许可协议可以是
- Apache 许可证第 2 版 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在本作品中并由您提交的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~37KB