4个稳定版本
1.3.0 | 2024年7月15日 |
---|---|
1.2.0 | 2024年7月5日 |
1.1.0 | 2024年6月27日 |
1.0.0 | 2024年3月17日 |
在过程宏中排名242
每月下载239次
10KB
94 行
UnitEnum库文档
unit-enum
库提供了一个名为UnitEnum
的过程宏,旨在增强Rust中的枚举,特别是仅由单元变体组成的枚举。此宏通过提供有用的实用方法简化了此类枚举的处理。
功能
name
:检索枚举变体的名称。ordinal
:检索枚举变体的序数,从0开始。from_ordinal
:如果可能,将序数转换回枚举变体。discriminant
:检索枚举变体的区分符。from_discriminant
:将区分符转换回枚举变体。len
:获取枚举中的变体总数。values
:返回枚举所有变体的迭代器,允许轻松迭代和处理每个变体。
限制
- 仅适用于具有单元变体的枚举。
- 不支持携带数据的或元组的枚举变体,会导致编译时错误。
安装
将以下内容添加到你的Cargo.toml
[dependencies]
unit-enum = "1.3.0"
快速入门
use unit_enum::UnitEnum;
#[derive(Debug, Clone, Copy, PartialEq, UnitEnum)]
enum Color {
Red = 10,
Green,
Blue = 45654
}
fn main() {
println!("Name of Blue: {:?}", Color::Blue.name());
// Name of Blue: "Blue"
println!("Ordinal of Green: {:?}", Color::Green.ordinal());
// Ordinal of Green: 1
println!("Value of ordinal 2: {:?}", Color::from_ordinal(2));
// Value of ordinal 2: Some(Blue)
println!("Value of ordinal 4: {:?}", Color::from_ordinal(4));
// Value of ordinal 4: None
println!("Discriminant of Blue: {:?}", Color::Blue.discriminant());
// Discriminant of Blue: 45654
println!("Discriminant of Green: {:?}", Color::Green.discriminant());
// Discriminant of Green: 11
println!("Value of discriminant 10: {:?}", Color::from_discriminant(10));
// Value of discriminant 10: Some(Red)
println!("Value of discriminant 0: {:?}", Color::from_discriminant(0));
// Value of discriminant 0: None
println!("Number of Color variants: {:?}", Color::len());
// Number of Color variants: 3
println!("List of Color variants: {:?}", Color::values().collect::<Vec<_>>());
// List of Color variants: [Red, Green, Blue]
}
贡献
欢迎贡献!请随时提交拉取请求或在我们的GitHub仓库上打开问题。
许可证
本项目许可协议为MIT或Apache-2.0,由您选择。
依赖项
~265–710KB
~17K SLoC