2 releases
0.1.1 | Jun 18, 2024 |
---|---|
0.1.0 | Jun 18, 2024 |
#2043 in Data structures
11KB
144 lines
enum-from-variant
crate provides the EnumFromVariant macro, which simplifies the generation of the From trait for converting one enum variant to another enum variant. This is particularly useful when you need to handle error conversions or map different enum types in your Rust code.
USAGE:
Consider the following example where we convert between different enum types using the EnumFromVariant macro:
use enum_from_variant::EnumFromVariant;
use derive_more::Display;
#[derive(Debug, EnumFromVariant)]
pub enum MainError {
#[enum_from_variant("NetworkError")]
Network(String),
#[enum_from_variant("DatabaseError")]
Database(DatabaseError),
}
#[derive(Debug, Display)]
pub enum NetworkError {
Timeout(String),
}
#[derive(Debug, Display)]
pub enum DatabaseError {
ConnectionFailed(String),
}
fn network_request() -> Result<(), MainError> {
Err(NetworkError::Timeout("Network timeout".to_string()).into())
}
fn main() {
match network_request() {
Ok(_) => println!("Request succeeded"),
Err(e) => println!("Error: {:?}", e),
}
}
Limitations
Current Support
: The macro only supports enum variants with basic inner types like String and other enums.
Unsupported Types
: Tuple variants, struct variants, and more complex inner types are not supported at this time.
Dependencies
~1.5MB
~38K SLoC