enum-repr

Crates.ioenum-repr
lib.rsenum-repr
version0.2.6
sourcesrc
created_at2018-07-19 17:10:15.730248
updated_at2020-02-17 16:06:08.495281
descriptionDerive enum repr conversions compatible with type aliases.
homepage
repositoryhttps://github.com/dmnsafonov/enum-repr
max_upload_size
id75098
size27,855
Dmitrii Safonov (domisafonov)

documentation

README

enum-repr

Build Status Crates.io Documentation

Generate enum repr conversions compatible with type aliases. Works on no_std.

EnumRepr proc macro takes an type argument and defines two functions for the enum used on:

fn repr(&self) -> EnumReprType
fn from_repr(x: EnumReprType) -> Option<Self>

The real enum discriminant still remains isize.

extern crate enum_repr;
extern crate libc;

use libc::*;

use enum_repr::EnumRepr;

#[EnumRepr(type = "c_int")]
#[derive(Debug, PartialEq)]
pub enum IpProto {
    IP = IPPROTO_IP,
    IPv6 = IPPROTO_IPV6,
    // …
}

fn main() {
    assert_eq!(IpProto::IP.repr(), IPPROTO_IP);
    assert_eq!(IpProto::from_repr(IPPROTO_IPV6), Some(IpProto::IPv6));
    assert!(IpProto::from_repr(12345).is_none());
}

License

This project is licensed under either of

at your option.

Commit count: 40

cargo fmt