#枚举 #变体 #特性 #单元 #生成 #部分等价 #调试

same_enum

为具有相同单元变体的枚举生成 From 特性实现

3个版本

0.1.2 2024年7月19日
0.1.1 2024年7月19日
0.1.0 2024年7月19日

#431过程宏

Download history 291/week @ 2024-07-14 22/week @ 2024-07-21 45/week @ 2024-07-28 2/week @ 2024-08-04

每月 360 次下载

MIT 许可证

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