[英]How to convert Option<&T> to Option<T> in the most idiomatic way in Rust?
當使用 HashMap 的get
方法時,我得到一個Option<&T>
,這次我又遇到了它Option<&String>
。 我想獲得一個擁有的價值Option<String>
。 如果我不寫map(|x| x.to_owned())
這可能嗎?
我只是想知道是否有辦法為任何實用程序特性編寫一個全面的實現來實現這一目標?
Option
附帶用於各種轉換的實用方法,這些方法在其文檔中列出。 對於任何T
實現Clone
(這String
那樣), Option<&T>::cloned
確實你在找什么。
Clone
比ToOwned
更具體,因此.cloned()
不是.map(|x| x.to_owned())
的精確匹配。 例如,它不會將Option<&str>
變成Option<String>
; 為此,您將不得不堅持使用map
。
由於銹1.35,當T
是Copy
, .copied()
做同樣的事情.cloned()
但它將無法編譯的時候T
不是Copy
。 當您想明確克隆很便宜時,您可以使用它。
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.