Rust中的null/nil是什么以及如何处理它?
大家好!在C++/Java之后开始学习Rust,但一直无法理解null/nil的概念。在其他语言中,我习惯于变量可以是null(或nil),这经常导致NullPointerException。据我所知,Rust中不应该出现这种情况,那么如何处理值的缺失呢?
我已经阅读过关于Option的内容,并理解它是Java中Optional或Haskell中Maybe的类似物。但在实践中我遇到了困难。以下是我编写的示例代码:
```rust
fn find_user(id: i32) -> Option {
if id == 1 {
Some(String::from("Alice"))
} else {
None
}
}
fn main() {
let user = find_user(2);
// 如何正确处理这种情况?
// 我尝试过:
// let name = user.unwrap(); // 在None时panic
// let name = user.expect("User not found"); // 同样panic
// let name = user.unwrap_or(String::from("Default")); // 有效,但丢失了错误信息
}
```
我期望在