簡體   English   中英

如何將 Option&lt;&amp;T&gt; 轉換為 Option<T> 以 Rust 中最慣用的方式?

[英]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確實你在找什么。

CloneToOwned更具體,因此.cloned()不是.map(|x| x.to_owned())精確匹配。 例如,它不會將Option<&str>變成Option<String> 為此,您將不得不堅持使用map

由於銹1.35,當TCopy.copied()做同樣的事情.cloned()但它將無法編譯的時候T不是Copy 當您想明確克隆很便宜時,您可以使用它。


也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM