将Option<&str>
转换为Option<String>
的最佳做法是什么?严格来说,我正在寻找一个简洁的等价物:
if s.is_some() {
Some(s.to_string())
} else {
None
}
这是我能想到的最好的:
s.and_then(|s| Some(s.to_string()))
答案 0 :(得分:8)
答案 1 :(得分:4)
另一种方法是使用s.map(str::to_string)
:
let reference: Option<&str> = Some("whatever");
let owned: Option<String> = reference.map(str::to_string);
我个人认为没有额外的封闭它会更清洁。