我如何match在枚举引用上?我使用的依赖项返回对枚举的引用,我需要读取枚举包含的值。在下面的例子中,我关心的事情是分配final_val有x:
fn main() {
let test_string = String::from("test");
let option: std::option::Option<String> = Some(test_string);
let ref_option = &option;
let final_val = match ref_option {
Some(x) => x,
_ => String::from("not Set"),
};
println!("{:?}", final_val);
}
Run Code Online (Sandbox Code Playgroud)
如果我遵循编译器的建议并&在类型中添加 aSome和ref x:
fn main() {
let test_string = String::from("test");
let option: std::option::Option<String> = Some(test_string);
let ref_option = &option;
let final_val = match ref_option {
&Some(ref x) => x,
_ => String::from("not Set"),
};
println!("{:?}", final_val);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,我不知道如何解决:
fn main() {
let test_string = String::from("test");
let option: std::option::Option<String> = Some(test_string);
let ref_option = &option;
let final_val = match ref_option {
Some(x) => x,
_ => String::from("not Set"),
};
println!("{:?}", final_val);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用。在第一只手臂上返回&String,在第二只手臂上返回String。
如果你 clone x,它会起作用,但不清楚你真正想要什么。
let final_val = match ref_option {
&Some(ref x) => x.clone(),
_ => String::from("not Set"),
};
Run Code Online (Sandbox Code Playgroud)
编辑:
我希望它是一个字符串
那么提到的解决方案就是要走的路。但是,如果您真的不需要 a String,则应该使用tafia 的解决方案:
let final_val = match *ref_option {
Some(ref x) => x,
_ => "not Set",
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1076 次 |
| 最近记录: |