Avatar ·

什么是 Rust 中的 Some 和 None?为新手解释 Option<T>

你好!我刚从 Python 和 JavaScript 开始学习 Rust,遇到了一个难以理解的构造。在别人的代码中,我经常看到这样的东西: ```rust fn find_user(id: u32) -> Option { if id == 42 { Some(String::from("Alice")) } else { None } } ``` 我完全不明白 `Some` 和 `None` 是什么。为什么不能直接返回一个字符串或 `null`?在 Python 中,我会这样写: ```python def find_user(id): if id == 42: return "Alice" else: return None ``` 而且这样是可行的。但在 Rust 中,我必须写一些 `Option` 并把结果包装在 `Some` 里。更有甚者,我尝试使用这个函数的结果——却得到了编译错误。这是我的代码: ```rust let user = find_user(42); println!("User: {}", user); // 错误! ``` 编译器报错说 `Option` 没有实现 `Display` trait。我该如何正确使用它?`Some` 和 `None` 到底是什么意思?为什么 Rust 不能像...