Avatar ·

Conversión de Option<String> a Option<&str> en Rust: ¿cómo hacerlo correctamente?

¡Hola a todos! Acabo de empezar a aprender Rust y me encontré con un problema de conversión de tipos. Tengo una función que devuelve `Option`, pero necesito pasar su resultado a otra función que espera `Option<&str>`. Aquí hay un ejemplo simplificado: ```rust fn get_name() -> Option { Some("Alice".to_string()) } fn print_name(name: Option<&str>) { match name { Some(n) => println!("Hello, {}", n), None => println!("No name provided"), } } fn main() { let name = get_name(); // ¿Cómo pasar name a print_name? print_name(name); // ¡Error de compilación! } ``` El compilador da un error: `expected Option<&str>, found Option`. Entiendo que `String` y `&str` son tipos diferentes, pero ¿cómo convertir correctamente `Option` a `Option<&str>`? Intenté hacer esto: `print_name(name.as_deref())`, pero no estoy seguro de que sea correcto. Explíquenme, por favor, cómo funciona esto y qué método se considera idiomático en Rust. Gracias.