Avatar ·

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