Avatar ·

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")); // 有效,但丢失了错误信息 } ``` 我期望在