When using HashMap\'s get
method, I get an Option<&T>
, I\'ve encountered it again this time with Option<&String>
.
Option
comes with utility methods for various transformations, which are listed in its documentation. For any T
that implements Clone
(which String
does), Option<&T>::cloned does what you're looking for.
Clone
is more specific than ToOwned
, so .cloned()
isn't an exact match for .map(|x| x.to_owned())
. For example, it won't turn an Option<&str>
into an Option<String>
; for that you will have to stick with map
.
Since Rust 1.35, when T
is Copy
, .copied() does the same thing as .cloned()
, but it will fail to compile when T
is not Copy
. You might use this when you want to be explicit that the clone is cheap.
See also: