derive-ctor 1.0.6

Adds `#[derive(ctor)]` which allows for the auto-generation of struct, enum, and union constructors.
Documentation
use derive_ctor::ctor;

#[derive(ctor, Debug, PartialEq)]
enum UnnamedVariantEnum {
    One(#[ctor(default)] i32),
}

#[test]
fn test_unnamed_variant_property() {
    let result = UnnamedVariantEnum::one();
    assert_eq!(UnnamedVariantEnum::One(0), result)
}

#[derive(ctor, Debug, PartialEq)]
enum UnnamedVariantEnumMultipleFields {
    Many(i32, #[ctor(expr(false))] bool, #[ctor(into)] String),
}

#[test]
fn test_unnamed_variant_multiple_properties() {
    let result = UnnamedVariantEnumMultipleFields::many(50, "FooBar");
    assert_eq!(
        UnnamedVariantEnumMultipleFields::Many(50, false, String::from("FooBar")),
        result
    );
}

#[derive(ctor, Debug, PartialEq)]
enum EnumMultipleUnnamedVariants {
    One(i32),
    Two(bool, #[ctor(default)] String),
    Three(#[ctor(cloned)] String),
}

#[test]
fn test_multiple_enum_variants() {
    let one = EnumMultipleUnnamedVariants::one(13);
    assert_eq!(EnumMultipleUnnamedVariants::One(13), one);

    let two = EnumMultipleUnnamedVariants::two(false);
    assert_eq!(
        EnumMultipleUnnamedVariants::Two(false, String::default()),
        two
    );

    let s = String::from("Test");
    let three = EnumMultipleUnnamedVariants::three(&s);
    assert_eq!(EnumMultipleUnnamedVariants::Three(s), three);
}