#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 817/week @ 2024-03-13 1164/week @ 2024-03-20 1304/week @ 2024-03-27 1305/week @ 2024-04-03 1205/week @ 2024-04-10 1314/week @ 2024-04-17 1142/week @ 2024-04-24 1366/week @ 2024-05-01 1069/week @ 2024-05-08 1623/week @ 2024-05-15 1112/week @ 2024-05-22 1252/week @ 2024-05-29 1640/week @ 2024-06-05 1524/week @ 2024-06-12 1200/week @ 2024-06-19 1218/week @ 2024-06-26

每月下载量 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