2个版本
使用旧的Rust 2015
0.1.1 | 2017年4月21日 |
---|---|
0.1.0 | 2017年4月21日 |
#59 in #builder-pattern
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