在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中被认为是惯用的。