3个版本

0.1.2 2019年10月14日
0.1.1 2019年6月24日
0.1.0 2019年5月7日

#809过程宏

Download history 3003/week @ 2024-03-14 3401/week @ 2024-03-21 2890/week @ 2024-03-28 3302/week @ 2024-04-04 3477/week @ 2024-04-11 3730/week @ 2024-04-18 2927/week @ 2024-04-25 2826/week @ 2024-05-02 3013/week @ 2024-05-09 2905/week @ 2024-05-16 2907/week @ 2024-05-23 3655/week @ 2024-05-30 3967/week @ 2024-06-06 4162/week @ 2024-06-13 4032/week @ 2024-06-20 3661/week @ 2024-06-27

16,743 每月下载量
15 crates 中使用(11 直接使用)

MIT 许可证

48KB
900 代码行

enum-utils

crates.io docs.rs Build Status

一组用于在枚举上派生有用功能的过程宏。

有关更多信息,请参阅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]);

TryFromReprReprFrom

将类似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