Derive Macro is_macro::Is[][src]

#[derive(Is)]
{
    // Attributes available to this derive:
    #[is]
}

A proc macro to generate methods like is_varaiant / expect_variant.

Example


use is_macro::Is;
#[derive(Debug, Is)]
pub enum Enum<T> {
    A,
    B(T),
    C(Option<T>),
}

// Rust's type inference cannot handle this.
assert!(Enum::<()>::A.is_a());

assert_eq!(Enum::B(String::from("foo")).b(), Some(String::from("foo")));

assert_eq!(Enum::B(String::from("foo")).expect_b(), String::from("foo"));

Renaming


use is_macro::Is;
#[derive(Debug, Is)]
pub enum Enum {
    #[is(name = "video_mp4")]
    VideoMp4,
}

assert!(Enum::VideoMp4.is_video_mp4());