#枚举 #字符串 # #过程宏 #u8 # #enum-utils

enum-utils-from-str

字符串到任意值的映射的代码生成

2 个版本

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

#1484Rust 模式

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

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