Option comes with utility methods for various transformations, which are listed in its documentation. For any
T that implements
Option<&T>::cloned does what you’re looking for.
Clone is more specific than
.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
Since Rust 1.35, when
.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.
- How to clone last element from vector?
- Get the last element of a vector and push it to the same vector