1个不稳定版本
0.0.2 | 2023年10月12日 |
---|
#94 在 #required
50 每月下载量
用于 2 个crate(通过 simple-builder)
11KB
198 行
simple-builder
为任意Rust结构体实现构建器模式的一个简单实现。
这个包可以很容易地被称作“另一个构建器”(简称YAB),但它为那些寻求构建器实现的功能较少,而更多寻求使用便捷性的人提供了一个细分市场。特别是这个实现是为那些具有多个必需字段和许多可选字段的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);
}
lib.rs
:
为任何结构体创建Builder对象的进程宏。这个crate旨在被 simple-builder
crate使用,而不是直接消费。
依赖项
~310–770KB
~18K SLoC