3个版本
0.1.2 | 2019年10月14日 |
---|---|
0.1.1 | 2019年6月24日 |
0.1.0 | 2019年5月7日 |
#809 在 过程宏 中
16,743 每月下载量
在 15 个 crates 中使用(11 直接使用)
48KB
900 代码行
enum-utils
一组用于在枚举上派生有用功能的过程宏。
有关更多信息,请参阅API文档。
FromStr
一个针对类似C的枚举的高效、可配置的 FromStr
实现。
#[derive(Debug, PartialEq, enum_utils::FromStr)]
enum Test {
Alpha,
Beta,
}
assert_eq!("Alpha".parse(), Ok(Test::Alpha));
assert_eq!("Beta".parse(), Ok(Test::Beta));
IterVariants
一个静态方法,返回枚举变体的迭代器。
#[derive(Debug, PartialEq, Eq, enum_utils::IterVariants)]
#[repr(u8)]
pub enum Direction {
North = 1,
East,
South,
West,
}
use Direction::*;
assert_eq!(Direction::iter().collect::<Vec<_>>(), vec![North, East, South, West]);
TryFromRepr
和 ReprFrom
将类似C的枚举的区分符转换为其他类型,以及反向转换。
use std::convert::TryInto;
#[derive(Debug, Clone, Copy, PartialEq, Eq, enum_utils::ReprFrom, enum_utils::TryFromRepr)]
#[repr(u8)]
pub enum Direction {
North = 1,
East,
South,
West
}
use Direction::*;
assert_eq!(1u8, North.into());
assert_eq!(4u8, West.into());
assert_eq!(North, 1u8.try_into().unwrap());
assert_eq!(West, 4u8.try_into().unwrap());
依赖
~4–5MB
~111K SLoC