struct_derive

Crates.iostruct_derive
lib.rsstruct_derive
version0.2.1
sourcesrc
created_at2024-07-08 15:20:55.173891
updated_at2024-07-08 15:25:03.780973
descriptionautomatically apply function on certain type of struct
homepage
repositoryhttps://github.com/magicwenli/struct_derive
max_upload_size
id1296077
size6,017
magicWenli (magicwenli)

documentation

README

struct_derive

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).

Usage

  1. First, you need to add the struct_derive dependency in your Cargo.toml file.
[dependencies]
struct_derive = "0.2.1"
  1. Then, you can use the #[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,
}
  1. Now, your struct has an 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.

Commit count: 8

cargo fmt