Как преобразовать Option<& T> в Option<T> самым идиоматическим способом в Rust?
При использовании HashMap's get
метод, я получаю Option<&T>
Я столкнулся с этим снова на этот раз с Option<&String>
, Я хотел бы получить собственную стоимость Option<String>
, Возможно ли это без меня писать map(|x| x.to_owned())
?
Мне просто интересно, есть ли способ написать общую реализацию для какой-либо полезности для достижения этой цели?
1 ответ
Option
поставляется с полезными методами для различных преобразований, которые перечислены в его документации. Для любого T
который реализует Clone
(который String
делает), Option<&T>::cloned
делает то, что вы ищете.
Clone
более конкретно, чем ToOwned
, так .cloned()
не совсем соответствует .map(|x| x.to_owned())
, Например, это не повернет Option<&str>
в Option<String>
; для этого вам придется придерживаться map
,
Смотрите также: