我怎么知道Rust中是否有东西被初始化了?

时间:2016-04-01 18:46:50

标签: rust

我有一些伪代码可以检查变量是否为null

Test test;

if (test == null) {
    test = new Test();
}

return test;

如何在Rust中做这样的事情?这是我到目前为止的尝试:

struct Test {
    time: f64,
    test: Test,
}

impl Test {
    fn get(&self) -> Test {

        if self.test == null {
            // <--

            self.test = Test { time: 1f64 };
        } else {
            self.test
        }
    }
}

1 个答案:

答案 0 :(得分:10)

在运行时无法检测到未初始化的变量,因为编译器不会让你走得那么远。

但是,如果您希望存储可选值,则Option<...>类型非常方便。然后,您可以使用matchif let语句来检查:

let mut x: Option<f32> = None;
// ...

x = Some(3.5);
// ...

if let Some(value) = x {
    println!("x has value: {}", value);
}
else {
    println!("x is not set");
}