#builder #staged #proc-macro #generate #telescopic

无 std staged-builder

一个用于生成类型分阶段构建器的过程宏

4 个版本

0.2.0 2024 年 2 月 11 日
0.1.2 2023 年 3 月 20 日
0.1.1 2022 年 3 月 6 日
0.1.0 2022 年 2 月 6 日

无标准库 中排名第 55

Download history • Rust 包仓库 817/week @ 2024-03-13 • Rust 包仓库 1164/week @ 2024-03-20 • Rust 包仓库 1304/week @ 2024-03-27 • Rust 包仓库 1305/week @ 2024-04-03 • Rust 包仓库 1205/week @ 2024-04-10 • Rust 包仓库 1314/week @ 2024-04-17 • Rust 包仓库 1142/week @ 2024-04-24 • Rust 包仓库 1366/week @ 2024-05-01 • Rust 包仓库 1069/week @ 2024-05-08 • Rust 包仓库 1623/week @ 2024-05-15 • Rust 包仓库 1112/week @ 2024-05-22 • Rust 包仓库 1252/week @ 2024-05-29 • Rust 包仓库 1640/week @ 2024-06-05 • Rust 包仓库 1524/week @ 2024-06-12 • Rust 包仓库 1200/week @ 2024-06-19 • Rust 包仓库 1218/week @ 2024-06-26 • Rust 包仓库

每月下载量 5,877
用于 11 Crates(4 个直接使用)

MIT/Apache 许可协议

11KB
106 行代码(不包括注释)

一个创建类型 "分阶段" 构建器的过程宏。

分阶段(也称为望远镜式)构建器是一种不可失败的构建器风格;如果任何必填字段未设置,则代码无法编译。具体来说,构建器按照顺序通过一系列 "阶段" 类型前进,每个类型对应于结构体的一个必填字段。最后一个阶段包含所有可选字段的设置器以及最终的 .build() 方法。

有关 #[staged_builder] 的更多详细信息,请参阅文档。

示例

use staged_builder::staged_builder;

#[staged_builder]
struct Person {
    #[builder(into)]
    name: String,
    age: u32,
    #[builder(list(item(type = Person)))]
    parents: Vec<Person>,
}

let person = Person::builder()
    .name("John Doe")
    .age(25)
    .build();

依赖关系

~0.4–0.8MB
~18K SLoC