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