Есть ли способ конвертировать std :: io :: Error в fail :: error :: Error? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть этот код:

let file = FileStorage {
   // ...
};

file.write("Test", bytes.as_ref())
    .map_err(|e| MultipartError::Payload(error::PayloadError::Io(e)))?;

Не имеет значения, в каком контексте этот код написан для моего вопроса, так что это просто для демонстрации, и я не буду более подробно рассказывать о функциональнои контекст этого кода.

error::PayloadError::Io(e) принимает std::io::Error структуру, но ResultError моего собственного типа FileStorage занимает failure::error::Error.

Я мог бы изменить ResultError моего типабыть std::io::Error, но по другим причинам это невозможно в этом проекте.

Поскольку две ошибки являются внешними признаками, я не могу реализовать одну для друг друга.Есть ли простой способ конвертировать ошибки, не создавая свой собственный тип ошибки?

1 Ответ

0 голосов
/ 01 июля 2019

Решение в комментарии @ AbhijitKadam отлично сработало для меня:

file.write("Test", bytes.as_ref())
                     .map_err(|e| MultipartError::Payload(error::PayloadError::Io(std::io::Error::new(ErrorKind::Other, e))))?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...