Как развернуть & Result <_, _>? - PullRequest
0 голосов
/ 23 мая 2018

Каков хороший способ извлечь данные из типа &Result?

В моем конкретном случае у меня есть тип &Result<DirEntry, Error>, который я не могу развернуть, потому что мне не принадлежитобъект.Я попытался разыскивать и клонировать его (*left_item).clone(), но это просто выдает ошибку с пометкой:

the method `clone` exists but the following trait bounds were not satisfied:
`std::result::Result<std::fs::DirEntry, std::io::Error> : std::clone::Clone`

1 Ответ

0 голосов
/ 23 мая 2018

Вы ищете Result::as_ref:

Преобразует из Result<T, E> в Result<&T, &E>.

Создает новый Result, содержащийссылка на оригинал, оставляя оригинал на месте.

Следующий код решает вашу проблему:

let entry: &DirEntry = result.as_ref().unwrap();

Для изменяемой версии: Result::as_mut предоставляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...