2 个版本

0.1.2 2019 年 10 月 14 日
0.1.0 2019 年 5 月 7 日

#1484Rust 模式

Download history · Rust 包仓库 3001/week @ 2024-03-14 · Rust 包仓库 3400/week @ 2024-03-21 · Rust 包仓库 2889/week @ 2024-03-28 · Rust 包仓库 3305/week @ 2024-04-04 · Rust 包仓库 3485/week @ 2024-04-11 · Rust 包仓库 3716/week @ 2024-04-18 · Rust 包仓库 2934/week @ 2024-04-25 · Rust 包仓库 2833/week @ 2024-05-02 · Rust 包仓库 3018/week @ 2024-05-09 · Rust 包仓库 2908/week @ 2024-05-16 · Rust 包仓库 2916/week @ 2024-05-23 · Rust 包仓库 3661/week @ 2024-05-30 · Rust 包仓库 3969/week @ 2024-06-06 · Rust 包仓库 4160/week @ 2024-06-13 · Rust 包仓库 4035/week @ 2024-06-20 · Rust 包仓库 3649/week @ 2024-06-27 · Rust 包仓库

16,735 每月下载量
用于 16 个 crate(通过 enum-utils

MIT 许可证

13KB
286

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());

依赖项

~82KB