#error #枚举 #错误处理 #derive #宏 derive

枚举码

通过 derive(Code) 简化错误处理,提供易于使用的错误码枚举

2 个版本

0.1.1 2023年6月14日
0.1.0 2023年6月14日

1833 in Rust 模式

MIT 许可证

7KB
58 代码行

枚举码

简介

enum-code 是一个用于 enum 类型的 derive 宏。该库生成将错误码与错误类型关联的代码。它可以与 thiserror 库一起使用。开发者可以通过调用 get_code 方法快速检索错误码。

安装

enum-code 已发布在 Cargo 上,可以使用以下命令安装:

$ cargo add enum-code

使用

  1. Code 属性添加到 enum 类型

    #[derive(enum_code::Code)]
    enum TestError {
        #[code(1)]
        Tuple(String),
        #[code(2)]
        Struct { message: String },
        #[code(3)]
        Simple,
    }
    
  2. 代码生成

    对于上面的 TestError 枚举,生成一个关联的 impl TestError 结构体,其中包含一个 get_code 方法,该方法根据变体值返回相应的错误码。

    impl TestError {
        pub const fn get_code(&self) -> u32 {
            match self {
                TestError::Tuple(..) => 1u32,
                TestError::Struct { .. } => 2u32,
                TestError::Simple => 3u32,
            }
        }
    }
    
  3. 检索错误码

    可以通过调用 get_code 来检索错误码

    let err = TestError::Tuple("error message".to_owned());
    let code = err.get_code();
    println!("error code: {}", code); // should print 「error code: 1」
    

许可证

MIT

依赖

~285–740KB
~18K SLoC