三方库一般会自定义自己的Error,如果不想在该函数内处理,考虑用Result<Someting, MyError>来返回。 需要把不同三方库的Error整合进MyError里,才能正常编译运行。 但不知如何处理?有推荐的Error库能实现该需求吗? 还是rust的哲学就是要将不同库的Error尽快处理,不要抛给上层代码?
1
共 4 条评论, 1 页
三方库一般会自定义自己的Error,如果不想在该函数内处理,考虑用Result<Someting, MyError>来返回。 需要把不同三方库的Error整合进MyError里,才能正常编译运行。 但不知如何处理?有推荐的Error库能实现该需求吗? 还是rust的哲学就是要将不同库的Error尽快处理,不要抛给上层代码?
评论区
写评论也许你需要 https://docs.rs/thiserror
可以试试 Anyhow,能把各种库的错误类型转成统一的
anyhow::Error
,只要底层库的错误类型实现了std::error::Error
。还可以用anyhow!
宏现场生成anyhow::Error
。按作者的说法:
我用Snafu做了将三方库的Error转化成自定义Error,不知这么做是否优雅或有无明显诟病?
还有就是模仿官方例子中的定义错误enum时,配了source:surf::Exception,但始终报错,不知怎么用。
可以看一下failure和它的文档.