Crate litenum

Source
Expand description

litenum

litenum is the minimal utility for conversion between literal and enum !

§Features

  • minimal inplementation
  • no std, no alloc

§How to use

§to literal

#[litenum::to]
enum AnkerTarget {
    _blank,
    _self,
    _top,
    _parent,
}

fn main() {
    assert_eq!(
        AnkerTarget::_blank.lit(),
        "_blank",
    )
}

§from literal

#[litenum::from]
#[derive(Debug, PartialEq)]
enum AnkerTarget {
    _blank,
    _self,
    _top,
    _parent,
}

fn main() {
    assert_eq!(
        AnkerTarget::from_lit("_blank"),
        Some(AnkerTarget::_blank),
    )
}

§impl both at once

#[litenum::ium] // same as
                // `#[litenum::to] #[litenum::from]`
#[derive(Debug, PartialEq)]
enum AnkerTarget {
    _blank,
    _self,
    _top,
    _parent,
}

fn main() {
    assert_eq!(
        AnkerTarget::_blank.lit(),
        "_blank",
    );

    assert_eq!(
        AnkerTarget::from_lit("_blank"),
        Some(AnkerTarget::_blank),
    );
}

Attribute Macros§

from
Generate method fn from_lit(lit: &str) -> Option<Self> that converts a &str variable to an enum variant by its name.
ium
Utility to impl lit and from_lit at once
to
Generate method fn lit(&self) -> &'static str that converts an enum variant to a literal by its name.