我有一些伪代码可以检查变量是否为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
}
}
}
答案 0 :(得分:10)
在运行时无法检测到未初始化的变量,因为编译器不会让你走得那么远。
但是,如果您希望存储可选值,则Option<...>
类型非常方便。然后,您可以使用match
或if 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");
}