Crates.io | from_variants |
lib.rs | from_variants |
version | 1.0.2 |
source | src |
created_at | 2017-04-18 23:50:39.849754 |
updated_at | 2023-02-08 15:41:37.278171 |
description | Rust macro to automatically generate conversions for newtype enums. |
homepage | |
repository | https://github.com/TedDriggs/from_variants |
max_upload_size | |
id | 11123 |
size | 12,214 |
Rust macro crate to automatically generate conversions from variant types into the target enum.
This crate requires Rust 1.45 or above to compile on stable.
use from_variants::FromVariants;
#[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:
use from_variants::FromVariants;
#[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()));
}
#[from_variants(skip)]
to that variant.#[from_variants(into)]
on an enum or variant to generate conversions
that will automatically convert - for example, accepting a &str
for a String
variant.
This must be used sparingly to avoid generating conflicting impls.