#builder #struct #object #macro #procedural #proc-macro #required

simple-builder-macro

为任何结构体创建Builder对象的进程宏

1个不稳定版本

0.0.2 2023年10月12日

#94#required

50 每月下载量
用于 2 个crate(通过 simple-builder

MIT 许可证

11KB
198

simple-builder

为任意Rust结构体实现构建器模式的一个简单实现。

badge License: MIT

这个包可以很容易地被称作“另一个构建器”(简称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