Struct std::lazy::SyncLazy[][src]

pub struct SyncLazy<T, F = fn() -> T> { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (once_cell #74465)
Expand description

在首次访问时初始化的值。

此类型是线程安全的 Lazy,可以在静态中使用。

Examples

#![feature(once_cell)]

use std::collections::HashMap;

use std::lazy::SyncLazy;

static HASHMAP: SyncLazy<HashMap<i32, String>> = SyncLazy::new(|| {
    println!("initializing");
    let mut m = HashMap::new();
    m.insert(13, "Spica".to_string());
    m.insert(74, "Hoyten".to_string());
    m
});

fn main() {
    println!("ready");
    std::thread::spawn(|| {
        println!("{:?}", HASHMAP.get(&13));
    }).join().unwrap();
    println!("{:?}", HASHMAP.get(&74));

    // Prints:
    //   准备初始化
    //   Some("Spica")
    //   Some("Hoyten")
}
Run

Implementations

🔬 This is a nightly-only experimental API. (once_cell #74465)

使用给定的初始化函数创建一个新的惰性值。

🔬 This is a nightly-only experimental API. (once_cell #74465)

强制评估此惰性值,并返回引数以得出结果。 这等效于 Deref impl,但是是显式的。

Examples

#![feature(once_cell)]

use std::lazy::SyncLazy;

let lazy = SyncLazy::new(|| 92);

assert_eq!(SyncLazy::force(&lazy), &92);
assert_eq!(&*lazy, &92);
Run

Trait Implementations

使用给定的格式化程序格式化该值。 Read more

使用 Default 作为初始化函数创建一个新的惰性值。

解引用后的结果类型。

解引用值。

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。