rust

How can I know if something is initialized in Rust?


I have some pseudocode that checks if a variable is null:

Test test;

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

return test;

How would I do something like this in Rust? This is my attempt so far:

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

impl Test {
    fn get(&self) -> Test {
        if self.test == null {  // <--
            self.test = Test { time: 1f64 };
        } else {
            self.test
        }
    }
}

Solution

  • Uninitialized variables cannot be detected at runtime since the compiler won't let you get that far.

    If you wish to store an optional value, however, the Option<...> type is handy for that. You can then use match or if let statements to check:

    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");
    }