Crates.io | struct_derive |
lib.rs | struct_derive |
version | 0.2.1 |
source | src |
created_at | 2024-07-08 15:20:55.173891 |
updated_at | 2024-07-08 15:25:03.780973 |
description | automatically apply function on certain type of struct |
homepage | |
repository | https://github.com/magicwenli/struct_derive |
max_upload_size | |
id | 1296077 |
size | 6,017 |
StructUpdate
is a derive macro in Rust that automatically generates an update_struct
method for your struct. This method transforms all fields of type String
in your struct to SCREAMING_SNAKE_CASE (all uppercase with underscores between words).
struct_derive
dependency in your Cargo.toml
file.[dependencies]
struct_derive = "0.2.1"
#[derive(StructUpdate)]
annotation on your struct. Also, you need to use the #[update_struct(with(ty = String, func = "to_screaming_snake_case"))]
annotation to specify which type of fields need to be updated and what function to use to update these fields.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
method. You can call this method to update the fields in the 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);
}
In the example above, the update_struct
method transforms the username
, first_name
, and last_name
fields to SCREAMING_SNAKE_CASE, but does not change the age
field, as the age
field is not of type String
.