Crate complex_enum_macros

Source
Expand description

A derive macro for automatically implementing code conversion for enums

This crate provides a ToCode derive macro that generates a to_code() method for converting enum variants to Option<u8> values.

§Example

use complex_enum_macros::ToCode;

#[derive(ToCode)]
#[repr(u8)]
enum Command {
    Start = 0x01,
    SetConfig { value: Option<u32> } = 0x02,
    SendData(String) = 0x03,
    Stop = 0x04,
    Unknown,
}

let cmd = Command::SetConfig { value: Some(42) };
assert_eq!(cmd.to_code(), Some(0x02));
let cmd = Command::SendData("Hello, world!".to_string());
assert_eq!(cmd.to_code(), Some(0x03));
let cmd = Command::Unknown;
assert_eq!(cmd.to_code(), None);

Derive Macros§