Crates.io | enum2repr |
lib.rs | enum2repr |
version | 0.1.14 |
source | src |
created_at | 2023-03-26 22:25:54.092056 |
updated_at | 2023-04-10 02:43:39.021699 |
description | EnumRepr is a rust derive macro that creates conversion methods to map between a value and an enum. Numeric types supported by `#[repr(T)]` are supported by enum2repr. |
homepage | https://github.com/matthewjberger/enum2repr |
repository | https://github.com/matthewjberger/enum2repr |
max_upload_size | |
id | 821539 |
size | 8,787 |
enum2repr is a rust derive macro that creates conversion methods to map between a value and an enum.
Numeric types supported by #[repr(T)]
are supported by enum2repr.
Add this to your Cargo.toml
:
enum2repr = "0.1.14"
Example:
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);
}