如何从 中返回默认值Option<&String>?
这是我的示例/最小代码:
fn main() {
let map = std::collections::HashMap::<String, String>::new();
let result = map.get("").or_else(|| Some("")).unwrap(); // <== I tried lots of combinations
println!("{}", result);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以做这样的事情......
let value = match result {
Some(v) => v,
None => "",
};
Run Code Online (Sandbox Code Playgroud)
...但我想知道是否可以用or_elseor来实现它unwrap_or_else?(使默认值变得惰性很重要,因此如果不使用它就不会被计算)
这些是我尝试过的一些编译器建议(我可以将它们全部放入,因为 SO 不允许我这样做):
7 | let result = map.get("").or_else(|| Some("") ).unwrap();
| ^^ expected struct `String`, found `str`
Run Code Online (Sandbox Code Playgroud)
。
7 | let result = map.get("").or_else(|| Some(&"".to_string()) ).unwrap();
| ^^^^^^--------------^
| | |
| …Run Code Online (Sandbox Code Playgroud) rust ×1