首页 > 解决方案 > 在 Rust 中定义可以返回多种错误类型的函数

问题描述

我有一个main()返回的函数Result()。在此函数中,我正在运行可能返回不同错误类型的其他函数。定义所有错误类型的最佳方法是什么?

考虑以下示例:

#[derive(Debug)]
enum Error {
    CustomError
}

fn can_raise_custom_error() -> Result<(), Error> {
    Ok(())
}

fn can_raise_io_error() -> Result<(), std::io::Error> {
    Ok(())
}

fn main() -> Result<(), ???> {
    let _ = can_raise_custom_error()?;
    let _ = can_raise_io_error()?;
    Ok(())
}

我想到的唯一一件事就是io::Error在我的枚举中定义并使用match表达式更改std::io::ErrorError:IoError.
有没有更好的办法?我希望像组合特征这样的东西,但它不起作用:

fn main() -> Result<(), <Error + std::io::Error>> {

标签: rust

解决方案


推荐阅读