Rust lazy_static!

示例

使用lazy_static板条箱创建在运行时初始化的全局不可变变量。我们HashMap用作示范。

在Cargo.toml:

[dependencies]
lazy_static = "0.1.*"

在main.rs:

#[macro_use]
extern crate lazy_static;

lazy_static! {
    static ref HASHMAP: HashMap<u32, &'static str> = {
        let mut m = HashMap::new();
        m.insert(0, "hello");
        m.insert(1, ",");
        m.insert(2, " ");
        m.insert(3, "world");
        m
    };
    static ref COUNT: usize = HASHMAP.len();
}

fn main() {
    // We dereference COUNT because it's type is &usize
    println!("The map has {} entries.", *COUNT);

    // 在这里,由于Deref强制,我们不使用*取消引用
    println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());
}