2 个版本
| 0.2.1 | 2024年7月8日 |
|---|---|
| 0.2.0 | 2024年7月8日 |
#344 在 过程宏
245 每月下载量
6KB
77 行
struct_derive
StructUpdate 是Rust中的一个derive宏,它自动为你的结构体生成一个 update_struct 方法。该方法将结构体中所有类型为 String 的字段转换为 SCREAMING_SNAKE_CASE(所有字母大写,单词间用下划线分隔)。
使用方法
- 首先,你需要在你的
Cargo.toml文件中添加struct_derive依赖。
[dependencies]
struct_derive = "0.2.1"
- 然后,你可以在你的结构体上使用
#[derive(StructUpdate)]注解。同时,你还需要使用#[update_struct(with(ty = String, func = "to_screaming_snake_case"))]注解来指定需要更新的字段类型以及更新这些字段所使用的函数。
use struct_derive::StructUpdate;
fn to_screaming_snake_case(input: String) -> String {
input.to_uppercase().replace(" ", "_")
}
#[derive(StructUpdate, Debug, Clone)]
#[update_struct(with(ty = String, func = "to_screaming_snake_case"))]
pub struct User {
username: String,
first_name: String,
last_name: String,
age: u32,
}
- 现在,你的结构体有一个
update_struct方法。你可以调用此方法来更新结构体中的字段。
fn main() {
let mut user = User {
username: "johndoe".to_string(),
first_name: "John".to_string(),
last_name: "Doe".to_string(),
age: 30,
};
println!("{:#?}", user);
user.update_struct();
println!("{:#?}", user);
}
在上面的例子中,update_struct 方法将 username、first_name 和 last_name 字段转换为 SCREAMING_SNAKE_CASE,但不会改变 age 字段,因为 age 字段不是 String 类型。
依赖项
~0.6–1MB
~24K SLoC