Как преобразовать 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,


Смотрите также:

Другие вопросы по тегам