MST

星途 面试题库

面试题:Rust中OnceCell延迟初始化的基础使用

在Rust中,使用OnceCell实现一个结构体的延迟初始化,结构体包含一个i32类型的字段。要求展示如何在首次访问时初始化该字段,并且在后续访问中直接返回已初始化的值。
27.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::cell::OnceCell;

struct MyStruct {
    value: OnceCell<i32>,
}

impl MyStruct {
    fn get_value(&self) -> i32 {
        self.value.get_or_init(|| {
            // 这里进行初始化操作,例如计算一个值
            42
        })
    }
}

你可以这样使用:

fn main() {
    let my_struct = MyStruct {
        value: OnceCell::new(),
    };
    let value1 = my_struct.get_value();
    let value2 = my_struct.get_value();
    assert_eq!(value1, 42);
    assert_eq!(value2, 42);
}