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());