1个不稳定版本
0.1.0 | 2024年3月16日 |
---|
619 在 过程宏 中
每月34次 下载
5KB
76 行
又一个Rust构建模式推导宏
用法
#[derive(Builder)]
struct Foo {
pub a: i32,
pub b: String,
pub c: bool,
pub d: Option<usize>,
}
let foo = Foo::builder()
.a(-3)
.b("Hello, world!".to_string())
.c(true)
.d(Some(2048))
.build();
assert_eq!(-3, foo.a);
assert_eq!("Hello, world!".to_string(), foo.b);
assert_eq!(true, foo.c);
assert_eq!(Some(2048), foo.d);
注意
该宏要求字段实现 Default
。如果未提供字段的值,它将分配默认值
#[derive(Builder)]
struct DefaultFoo {
pub a: i32,
pub b: bool,
}
let foo = DefaultFoo::builder()
.build();
assert_eq!(0, foo.a);
assert_eq!(false, foo.b);
声明未实现 Default
特性的字段将导致编译错误
pub struct NonDefault {}
#[derive(Builder)]
pub struct Foo {
d: NonDefault, // error[E0277]: the trait bound `NonDefault: Default` is not satisfied
}
依赖项
~275–720KB
~17K SLoC