3个版本
0.1.2 | 2024年7月19日 |
---|---|
0.1.1 | 2024年7月19日 |
0.1.0 | 2024年7月19日 |
#431 在 过程宏
每月 360 次下载
8KB
76 行
same_enum
为具有相同单元变体的枚举生成 From
特性实现。
入门
在源枚举定义上方放置 #[from(path::to::TargetEnum)]
或 #[to(path::to::TargetEnum)]
属性以生成 From
特性实现。
#[from(path::to::TargetEnum)]
生成从目标枚举转换为注解枚举的 From 特性实现。
示例
use same_enum::from;
#[from(TargetEnum)]
#[derive(PartialEq, Debug)]
enum SourceEnum {
One,
Two,
}
#[derive(PartialEq, Debug)]
enum TargetEnum {
One,
Two,
}
let target_one = TargetEnum::One;
let source_one: SourceEnum = target_one.into(); // from implementation gives us into() as well
assert_eq!(source_one, SourceEnum::One);
#[to(path::to::TargetEnum)]
生成从注解枚举转换为目标枚举的 From 特性实现。
示例
use same_enum::to;
#[to(TargetEnum)]
#[derive(PartialEq, Debug)]
enum SourceEnum {
One,
Two,
}
#[derive(PartialEq, Debug)]
enum TargetEnum {
One,
Two,
}
let source_one = SourceEnum::One;
let target_one = TargetEnum::from(source_one);
assert_eq!(target_one, TargetEnum::One);
恐慌
same_enum
如果注解项不是具有单元变体的枚举,则会发生恐慌。
具有单元变体的枚举示例可能是
enum BinaryNumbers {
Zero,
One,
}
依赖项
~1.5MB
~36K SLoC