9 个不稳定版本 (3 个破坏性更新)
0.4.2 | 2024 年 7 月 30 日 |
---|---|
0.4.1 | 2024 年 7 月 30 日 |
0.3.0 | 2024 年 6 月 8 日 |
0.2.1 | 2024 年 4 月 24 日 |
0.1.3 | 2024 年 4 月 18 日 |
#525 in Rust 模式
每月 345 次下载
用于 bevy_spawn_fn
10KB
116 行
default-constructor
创建伪 DSL 的宏,通过默认构造和字段转换来构建结构体。
动机
这个 crate 主要设计用于 bevy
,其中使用 ..Default::default()
构造大型捆绑包是常见的。
语法
使用 construct!
,它使用 Into
。
construct! {
Student {
name: "Timmy",
age: 10,
father: Parent {
name: "Tommy",
age: 42
}
}
}
这将扩展为
Student {
name: Into::into("Timmy"),
age: Into::into(10),
father: construct! {
Parent {
name: "Tommy",
age: 42
}
}
..Default::default()
}
如果不需要递归在嵌套结构声明上,请将嵌套结构用括号括起来。
construct! {
Student {
name: "Timmy",
age: 10,
father: { Parent {
name: "Tommy",
age: 42
}}
}
}
元组构造
要创建元组,使用逗号连接多个结构体。
construct! {
Student {
name: "Timmy",
age: 10,
},
Son::<2> {
of: "Tommy"
},
Age(16),
}
元构造宏
元构造宏允许您定义具有自定义配置的宏。
有关 meta_default_constructor!
的详细信息,请参阅文档。
InferInto
InferInto 允许用户绕过孤儿规则来创建转换。
默认情况下,我们为所有数字类型提供 i32
(整数字面量)和 i64
-> f64
,除了标准的 From
和 Into
。
如果找到多个转换路径,则转换将失败,从而失败 infer_construct
宏。
更改日志
- 0.4
meta_default_constructor
不再接受导入列表作为第一个参数。meta_default_constructor
现在可以通过逗号连接来创建元组。
许可
在以下任一许可下:
Apache 许可证第 2 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0) MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),由您选择。
贡献
欢迎贡献!
除非您明确表示,否则任何有意提交以包含在您的工作中的贡献(根据 Apache-2.0 许可证定义),都应按上述方式双重许可,而无需任何额外条款或条件。
依赖关系
~140KB