Attribute Macro quick_impl

Source
#[quick_impl]
Expand description

Quickly generate common methods and trait implementations on enums or structs.

§Enum example

use quick_impl::quick_impl;

#[quick_impl]
enum MyEnum {
    #[quick_impl(pub const is, impl Default)]
    Variant1,
    #[quick_impl(pub as_ref, pub(crate) as_ref_mut, impl From)]
    Variant2(i32),
}

let a = MyEnum::default();
assert!(a.is_variant1());

let mut b = MyEnum::from(42);
assert_eq!(*b.as_variant2().unwrap(), 42);

§Struct example

use quick_impl::quick_impl;

#[quick_impl(pub const new)]
struct MyStruct {
    #[quick_impl(pub get)]
    field1: i32,

    #[quick_impl(pub get_mut, impl Into)]
    field2: String,
}

let mut instance = MyStruct::new(1, "hello".to_string());
assert_eq!(*instance.get_field1(), 1);
instance.get_field2_mut().push_str(" world");
assert_eq!(&String::from(instance), "hello world");