#枚举 # #宏-derive #字节

enum2repr

EnumRepr 是一个 Rust derive 宏,它创建用于在值和枚举之间进行转换的方法。enum2repr 支持由 #[repr(T)] 支持的数值类型。

4个版本

0.1.14 2023年4月10日
0.1.13 2023年3月27日

504#macro-derive 中排名

Download history 459/week @ 2024-03-13 555/week @ 2024-03-20 836/week @ 2024-03-27 406/week @ 2024-04-03 747/week @ 2024-04-10 1230/week @ 2024-04-17 769/week @ 2024-04-24 737/week @ 2024-05-01 1045/week @ 2024-05-08 877/week @ 2024-05-15 764/week @ 2024-05-22 814/week @ 2024-05-29 682/week @ 2024-06-05 747/week @ 2024-06-12 710/week @ 2024-06-19 802/week @ 2024-06-26

每月下载量 3,164
用于 auto_uds

MIT 许可证

6KB
70

enum2repr

github crates.io docs.rs

enum2repr 是一个 Rust derive 宏,它创建用于在值和枚举之间进行转换的方法。EnumRepr 支持由 #[repr(T)] 支持的数值类型。

用法

将以下内容添加到您的 Cargo.toml

enum2repr = "0.1.14"

示例

use enum2repr::EnumRepr;

#[derive(EnumRepr, Debug, PartialEq, Copy, Clone)]
#[repr(u16)]
enum Color {
    Red = 0x04,
    Green = 0x15,
    Blue = 0x34,
}

#[test]
fn convert_variants() {
    assert_eq!(Ok(Color::Red), Color::try_from(0x04));
    assert_eq!(Ok(Color::Green), Color::try_from(0x15));
    assert_eq!(Ok(Color::Blue), Color::try_from(0x34));
}

#[test]
fn convert_variants_back() {
    assert_eq!(u16::from(Color::Red), 0x04);
    assert_eq!(u16::from(Color::Green), 0x15);
    assert_eq!(u16::from(Color::Blue), 0x34);
}

依赖项

~1.5MB
~35K SLoC