optbuilder 0.1.2

A optional builder derive macro for helping with big constructors with mostly optional parameters
Documentation
extern crate optbuilder;

#[cfg(test)]
pub mod tests {
    use optbuilder::OptionalBuilder;

    #[test]
    fn test_with_attr() {
        #[derive(Default, OptionalBuilder)]
        struct Foo {
            pub a: i32,
            pub b: Option<i32>,
            #[optbuilder(skip)]
            pub c: Option<i32>,
        }

        let foo = Foo::default().with_b(2);
        assert_eq!(foo.b, Some(2));

        let foo = Foo::default().with_b(2).without_b();
        assert_eq!(foo.b, None);

        let foo = Foo::default().without_b();
        assert_eq!(foo.b, None);

        let foo = Foo::default();
        assert_eq!(foo.b, None);
    }

    #[test]
    fn test_many_attrs() {
        #[derive(Default, OptionalBuilder)]
        struct Foo {
            pub a: i32,
            #[optbuilder(skip)]
            pub b: Option<i32>,
            #[optbuilder(skip)]
            pub c: Option<i32>,
            pub d: Option<String>,
            pub e: Option<u32>,
            #[optbuilder(skip)]
            pub f: Option<f32>,
        }

        let foo = Foo::default().with_e(2u32).with_d("AAAS");
        assert_eq!(foo.e, Some(2));
        assert_eq!(foo.d, Some("AAAS".to_string()));
    }
}