Avatar ·

在Rust中将Option<String>转换为Option<&str>:如何正确操作?

大家好!我刚开始学习Rust,遇到了类型转换的问题。我有一个返回`Option`的函数,但需要将其结果传递给另一个期望`Option<&str>`的函数。 这是一个简化的例子: ```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(); // 如何将name传递给print_name? print_name(name); // 编译错误! } ``` 编译器报错:`expected Option<&str>, found Option`。我知道`String`和`&str`是不同的类型,但如何正确地将`Option`转换为`Option<&str>`? 我试过这样做:`print_name(name.as_deref())`,但不确定是否正确。请解释一下这是如何工作的,以及哪种方法在Rust中被认为是惯用的。