#builder-pattern #derive-builder #builder #design-pattern #macro-derive #macro #derive

auto-builder

一个用于实现任何结构体构建器的 derive 宏

2 个不稳定版本

0.2.0 2024年1月21日
0.1.0 2024年1月20日

2191Rust 模式

每月 39 次下载

MIT 许可证

3KB

auto-builder

此 crate 提供了一个 derive 宏,用于为任何结构体实现构建器模式。

#[derive(Builder)]
struct Foo {           
    a: i32,
    b: Option<i32>,
 }

let foo = FooBuilder::new().a(1).b(Some(2)).build();
assert!(foo.is_ok());


lib.rs:

此 crate 提供了一个 derive 宏,用于为任何结构体实现 构建器模式

为名为 Foo 的结构体推导出 Builder 宏将生成一个名为 FooBuilder 的构建器结构体,其中包含用于设置 Foo 中每个字段的方法,以及一个用于从构建器创建 Foobuild 方法。如果任何字段未设置,则 build 方法将失败。它返回一个 Result<Foo, String>,其中 String 是一个指示哪些字段未设置的错误消息。

示例

use auto_builder::Builder;

#[derive(Builder)]
struct Foo {
  bar: i32,
  baz: String,
}

let complete_foo = FooBuilder::new().bar(42).baz("hello".to_string()).build()
let incomplete_foo = FooBuilder::new().bar(42).build();

assert!(complete_foo.is_ok());
assert!(incomplete_foo.is_err());

依赖关系

~305–760KB
~18K SLoC