从Option&lt;&amp; str&gt;转换到选项<string> </string>

时间:2014-11-30 23:26:40

标签: rust

Option<&str>转换为Option<String>的最佳做法是什么?严格来说,我正在寻找一个简洁的等价物:

if s.is_some() {
    Some(s.to_string())
} else {
    None
}

这是我能想到的最好的:

s.and_then(|s| Some(s.to_string()))

2 个答案:

答案 0 :(得分:8)

map是更好的选择:

s.map(|s| s.to_string())

s.map(str::to_string)

答案 1 :(得分:4)

另一种方法是使用s.map(str::to_string)

let reference: Option<&str> = Some("whatever");
let owned: Option<String> = reference.map(str::to_string);

我个人认为没有额外的封闭它会更清洁。