转换Option<&str>
为最佳做法是什么Option<String>
?严格来说,我正在寻找一个简洁的等价物:
if s.is_some() {
Some(s.to_string())
} else {
None
}
Run Code Online (Sandbox Code Playgroud)
这是我能想到的最好的:
s.and_then(|s| Some(s.to_string()))
Run Code Online (Sandbox Code Playgroud)
map
是一个更好的选择:
s.map(|s| s.to_string())
Run Code Online (Sandbox Code Playgroud)
要么
s.map(str::to_string)
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用s.map(str::to_string)
:
let reference: Option<&str> = Some("whatever");
let owned: Option<String> = reference.map(str::to_string);
Run Code Online (Sandbox Code Playgroud)
我个人觉得它更干净,没有额外的封闭。