Avatar ·

¿Qué es null/nil en Rust y cómo trabajar con ello?

¡Hola a todos! Empecé a estudiar Rust después de C++/Java, y no logro entender el concepto de null/nil. En otros lenguajes estoy acostumbrado a que una variable puede ser null (o nil), y esto a menudo llevaba a NullPointerException. Según entiendo, en Rust esto no debería ocurrir, pero entonces, ¿cómo trabajar con la ausencia de un valor? Ya leí sobre Option y entiendo que es el análogo de Optional en Java o Maybe en Haskell. Pero en la práctica tengo dificultades. Aquí hay un ejemplo de código que escribí: ```rust fn find_user(id: i32) -> Option { if id == 1 { Some(String::from("Alice")) } else { None } } fn main() { let user = find_user(2); // ¿Cómo manejar correctamente este caso? // Probé así: // let name = user.unwrap(); // panic en None // let name = user.expect("User not found"); // también panic // let name = user.unwrap_or(String::from("Default")); // funciona, pero pierdo información del error } ``` Espero que en