1 个不稳定版本
0.0.2 | 2023 年 10 月 12 日 |
---|
#2981 在 Rust 模式
36 每月下载量
在 kraken-async-rs 中使用
11KB
179 行
simple-builder
为任意 Rust 结构体实现 builder 模式的简单实现。
这个包可以很容易地被称为 "又一 builder" (YAB 简称),但它填补了那些不太关注 builder 实现功能,而更关注使用便利性的空白。 特别是这个实现是为那些具有多个必需字段和许多可选字段的 struct 量身定制的。 例如,这可能是端点的查询参数,必需字段如 nonce 和 id,然后是许多可选过滤参数,如开始和结束日期、价格范围、产品类型等。这个宏正是为这种特定用例量身打造的。
示例:简单用例
use simple_builder_macro::Builder;
// Debug, PartialEq, Eq are only for assertions
#[derive(Debug, PartialEq, Eq, Builder)]
struct Breakfast {
#[builder(required)]
pub coffee: i64, // coffee is required, and therefore not Option<T>
pub toast: Option<i64>,
pub eggs: Option<i64>,
pub bacon: Option<i64>,
}
pub fn main() {
let desired_breakfast = Breakfast {
coffee: 1,
toast: None,
eggs: Some(3),
bacon: Some(2),
};
// semantically equivalent to `Breakfast::builder(16)`
let mut builder = BreakfastBuilder::new(16);
let breakfast = builder.eggs(3).bacon(2).build();
assert_eq!(desired_breakfast, breakfast);
}
依赖
~1–9MB
~80K SLoC