使用HashMap的get
方法时,我得到了Option<&T>
,这次我又遇到了Option<&String>
。我想获得一个拥有的价值Option<String>
。不用我写map(|x| x.to_owned())
,这可能吗?
我只是想知道是否有一种方法可以针对任何实用工具特性编写一个全面的实现方案?
答案 0 :(得分:12)
Option
附带了用于各种转换的实用程序方法,这些方法在its documentation中列出。对于实现T
(Clone
确实如此)的任何String
,Option<&T>::cloned
会满足您的需求。
Clone
比ToOwned
更具体,因此.cloned()
不是.map(|x| x.to_owned())
的 exact 匹配项。例如,它不会将Option<&str>
变成Option<String>
;为此,您必须坚持使用map
。
另请参阅: