O que é null/nil em Rust e como trabalhar com isso?
Olá a todos! Comecei a estudar Rust depois de C++/Java e não consigo entender o conceito de null/nil. Em outras linguagens, estou acostumado que uma variável pode ser null (ou nil), e isso frequentemente levava a NullPointerException. Pelo que entendi, em Rust isso não deveria acontecer, mas então como trabalhar com a ausência de valor?
Já li sobre Option e entendo que é análogo ao Optional do Java ou Maybe do Haskell. Mas na prática, tenho dificuldades. Aqui está um exemplo de código que escrevi:
```rust
fn find_user(id: i32) -> Option {
if id == 1 {
Some(String::from("Alice"))
} else {
None
}
}
fn main() {
let user = find_user(2);
// Como tratar esse caso corretamente?
// Tentei assim:
// let name = user.unwrap(); // entra em pânico com None
// let name = user.expect("User not found"); // também entra em pânico
// let name = user.unwrap_or(String::from("Default")); // funciona, mas perco informação sobre o erro
}
```
Espero que em