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

Ang*_*gel 5 rust

我有一些伪代码检查变量是否null:

Test test;

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

return test;
Run Code Online (Sandbox Code Playgroud)

我怎么在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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

quo*_*ian 14

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

但是,如果您希望存储可选值,则该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");
}
Run Code Online (Sandbox Code Playgroud)