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.