如何在Rust中以最惯用的方式将Option <&T>转换为Option <t>?

时间:2018-07-14 12:40:09

标签: reference rust ownership

使用HashMap的get方法时,我得到了Option<&T>,这次我又遇到了Option<&String>。我想获得一个拥有的价值Option<String>。不用我写map(|x| x.to_owned()),这可能吗?

我只是想知道是否有一种方法可以针对任何实用工具特性编写一个全面的实现方案?

1 个答案:

答案 0 :(得分:12)

Option附带了用于各种转换的实用程序方法,这些方法在its documentation中列出。对于实现TClone确实如此)的任何StringOption<&T>::cloned会满足您的需求。

CloneToOwned更具体,因此.cloned()不是.map(|x| x.to_owned()) exact 匹配项。例如,它不会将Option<&str>变成Option<String>;为此,您必须坚持使用map


另请参阅: