有什么方法可以将std :: io :: Error转换为failure :: error :: Error?

时间:2019-06-26 11:11:46

标签: error-handling rust

我有此代码:

Unresolved reference: viewModelScope - Android KTX

针对我的问题编写此代码的实际上下文并不重要,因此仅用于演示目的,而我将不提供有关此代码的功能和上下文的更多详细信息。

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的{​​{1}}采用ResultError

我可以将类型的FileStorage更改为failure::error::Error,但是由于其他原因,在此项目中这是不可能的。

由于这两个错误是外部特征,因此我无法彼此实现。 有没有一种简便的方法可以在不创建自己的错误类型的情况下转换错误?

1 个答案:

答案 0 :(得分:0)

@AbhijitKadam注释中的解决方案对我来说效果很好:

file.write("Test", bytes.as_ref())
                     .map_err(|e| MultipartError::Payload(error::PayloadError::Io(std::io::Error::new(ErrorKind::Other, e))))?;