#enums #macro-derive #const #repr #traits #procedural #u8

macro no-std const-enum

Procedural derive macro for constant From trait implementations on enums based on repr type

1 unstable release

0.1.0 Dec 28, 2021

#31 in #repr


Used in const-bitfield

MIT/Apache

10KB
91 lines

const-enum

GitHub Crates.io docs.rs GitHub Actions Status

This crate providers a procedural derive macro ConstEnum, which will provide a const implementation of the From trait for converting an enum based on their repr type.

Unfortunately Rust Stable does not currently contain all required features for implementing this crate. To use of this library, you must use a recent Rust Nightly release and add the following feature flags to your crate root:

#![feature(const_trait_impl)]   // always required

Here is a simple example of how this library can be used:

#![feature(const_trait_impl)]

use const_enum::ConstEnum;

#[derive(Copy, Clone, Debug, Eq, PartialEq, ConstEnum)]
#[repr(u8)]
enum Test {
    A = 0b010,
    B = 0b100,
    C = 0b001
}

pub fn main() {
    println!("{:?}", Test::from(0b010 as u8));
    println!("{:?}", u8::from(Test::A));
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~1.5MB
~35K SLoC