2 releases
| 0.1.1 | Jun 14, 2023 |
|---|---|
| 0.1.0 | Jun 14, 2023 |
#2883 in Rust patterns
7KB
58 lines
enum-code
Introduction
enum-code is a derive macro for enum types. This library generates code that associates error codes with error types. It can be used in conjunction with the thiserror crate. Developers can quickly retrieve error codes by calling the get_code method.
Installation
enum-code is published on Cargo and can be installed using:
$ cargo add enum-code
Usage
-
Add the
Codeattribute to theenumtype:#[derive(enum_code::Code)] enum TestError { #[code(1)] Tuple(String), #[code(2)] Struct { message: String }, #[code(3)] Simple, } -
Code Generation
For the
TestErrorenum above, an associatedimpl TestErrorstruct is generated, which includes aget_codemethod that returns the corresponding error code based on the variant value.impl TestError { pub const fn get_code(&self) -> u32 { match self { TestError::Tuple(..) => 1u32, TestError::Struct { .. } => 2u32, TestError::Simple => 3u32, } } } -
Retrieving Error Codes
Error codes can be retrieved by calling
get_code:let err = TestError::Tuple("error message".to_owned()); let code = err.get_code(); println!("error code: {}", code); // should print 「error code: 1」
LICENSE
MIT
Dependencies
~225–670KB
~16K SLoC