2个版本

使用旧的Rust 2015

0.1.1 2017年4月21日
0.1.0 2017年4月21日

#59 in #builder-pattern

MIT 许可证

16KB
416

你不会在构造器上调用unwrap!

一个用于在任意结构体上派生类型安全构建模式的过程宏

示例

extern crate safe_builder;
#[macro_use]
extern crate safe_builder_derive;

use safe_builder::*;

#[derive(SafeBuilder)]
struct Person
{
    name: String,
    age: usize,
    //        town    street  number
    address: (String, String, usize)
}

fn main()
{
    let me: Person = Person::build()
        .name("Matthew M.".to_owned())
        .age(18)
        .address(("Toronto".to_owned(), "Younge st.".to_owned(), 0));
    // no need to call unwrap - the compiler knows that the type is complete
    
    let you = Person::build()
        .age(0) // hello, world!
        .address(("City".to_owned(), "Street".to_owned(), 0))
        .name("You!".to_owned());
    // build your structs in any order!
    
    /*
    Wont compile: the type is incomplete
    let no_name: Person = Person::build()
        .name("Unkown".to_owned())
        .address((String::new(), String::new(), 0));
    */
}

请将此crate用于您最复杂的结构体,并在发现错误时提出一些问题!

*目前不支持泛型结构体或带有lifetimes的结构体

依赖项

~2MB
~50K SLoC