1 个不稳定版本
0.1.1 | 2024 年 3 月 12 日 |
---|---|
0.1.0 |
|
#830 在 数据结构
每月 51 次下载
31KB
164 行
DataStruct.rs
这是一个过程宏库,可以自动生成纯数据结构的重复代码。
这个库能做什么?
该库提供 derive 宏来自动为数据结构实现“普通方法”。
目前可用
- 默认:标准
Default
、库特定DataStruct::data_default
和常量默认ConstDataStruct::DEFAULT
。 - 调试:手动
Debug
过滤器。 - 比较:标准
Eq
、PartialEq
、Ord
、PartialOrd
。 - 操作:标准
Add(Assign)
、Sub(Assign)
、Mul(Assign)
、Div(Assign)
。
与标准 derive 宏不同,DataStruct
宏接受用户定义的行为,而无需编写实现代码。
快速开始
有关完整文档,请在此处阅读:这里。
让我们从一个示例结构开始
struct Person {
age: u8,
name: String,
private_key: u32,
}
首先,将 datastruct
添加到您的依赖项中。库的核心入口点是 DataStruct
宏。
use datastruct::DataStruct;
#[derive(DataStruct)]
#[dstruct(debug)]
struct Person {
age: u8,
name: String,
#[dfield(no_debug)]
private_key: u32,
}
#[dstruct(xxx)]
用于配置代码生成器的基本选项。在本例中,debug
表示将实现 Debug
特性。
#[dfield(xxx)]
用于配置代码生成器的字段特定选项。在本例中,no_debug
表示此字段将不会包含在调试输出中。
use datastruct::DataStruct;
#[derive(DataStruct)]
#[dstruct(debug)]
struct Person {
age: u8,
name: String,
#[dfield(no_debug)]
private_key: u32,
}
let person = Person { age: 22, name: "James".to_string(), private_key: 42 };
println!("{:#?}", person);
// Output:
// Person {
// age: 22,
// name: "James",
// }
局限性
目前,该库只能生成典型结构的代码,不支持元组结构。
此外,与手动实现相比,大多数IDE支持无法为宏生成的代码提供完整的补全。
依赖项
约2MB
约44K SLoC