#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