2 个版本
0.1.1 | 2024年6月18日 |
---|---|
0.1.0 | 2024年6月18日 |
#1900 in 数据结构
11KB
144 代码行
enum-from-variant
库提供了 EnumFromVariant 宏,该宏简化了将一个枚举变体转换为另一个枚举变体的 From 特质的生成。这在处理错误转换或映射 Rust 代码中的不同枚举类型时尤其有用。
用法
以下是一个示例,其中我们使用 EnumFromVariant 宏在不同的枚举类型之间进行转换
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),
}
}
局限性
当前支持
:该宏仅支持具有基本内部类型(如 String 和其他枚举)的枚举变体。不受支持的类型
:目前不支持元组变体、结构体变体和更复杂的内部类型。
依赖项
~1.5MB
~36K SLoC