bidirectional_enum 0.2.0

Automatically generates conversions between an enum type and any other type
Documentation
  • Coverage
  • 0%
    0 out of 5 items documented0 out of 2 items with examples
  • Size
  • Source code size: 4.55 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.33 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • Homepage
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Giftzwerg02

Bidirectional Enums

A macro to automatically generate a two-way binding between an enum-type and any other type.

Example

use std::error::Error;

#[macro_use]
extern crate bidirectional_enum;

bi_enum! {
    #[derive(Debug)]
    enum SomeEnum <=> char 
    {
        T1 <=> 'a',
        T2 <=> 'b'
    }
}

fn main() -> Result<(), Box<dyn Error>> {
    let t1 = SomeEnum::T1;

    // from enum to char
    let a = char::from(t1); 
    dbg!(&a); // 'a'

    // from char back to enum
    let t1 = SomeEnum::try_from(a);
    dbg!(&t1); // Ok(SomeEnum::T1)

    // invalid char
    let err = SomeEnum::try_from('c');
    dbg!(&err); // Err(EnumTryFromErr { from: "char", to: "SomeEnum" })

    Ok(())
}