Crate from_variants [] [src]

Rust macro crate to automatically generate conversions from variant types into the target enum.

This crate requires Rust 1.15 or above to compile on stable.

Examples

#[macro_use]
extern crate from_variants;
 
#[derive(Debug, Clone, PartialEq, Eq, FromVariants)]
pub enum Lorem {
    Str(String),
    Num(u16),
}
 
fn main() {
    assert_eq!(Lorem::Num(10), Lorem::from(10));
}

You can skip variants to avoid type collisions:

#[macro_use]
extern crate from_variants;
 
#[derive(Debug, Clone, PartialEq, Eq, FromVariants)]
pub enum Ipsum {
    Hello(String),
     
    #[from_variants(skip)]
    Goodbye(String),
}
 
fn main() {
    assert_eq!(Ipsum::Hello("John".to_string()), Ipsum::from("John".to_string()));
}

Features

  • Variant opt-out: To skip a variant, add #[from_variants(skip)] to that variant.
  • no_std support: To generate conversions using core::convert::From, add #[from_variants(no_std)] at the struct level.

Reexports

pub use from_variants_impl::*;