#macro #automatic #getter-setter #editor #build #plugs #lombok

macro r-lombok-macros

r-lombok is a rust macros that automatically plugs into your editor and build tools

3 releases

0.0.3 Aug 18, 2022
0.0.2 Jul 29, 2022
0.0.1 Jul 19, 2022

#1452 in Procedural macros

Download history 32/week @ 2024-02-21 74/week @ 2024-02-28

106 downloads per month

MIT license

23KB
319 lines

r-lombok-macros

Crates.io Documentation

Macros for r-lombok-macros. it's a rust macros that automatically plugs into your editor and build tools,like java lombok

More information about this crate can be found in the crate documentation.

Usage example

use std::fmt::Debug;
use r_lombok_macros::{Getter, Setter};

#[derive(Debug, Getter, Setter)]
struct Company {
    name: &'static str,
    boss: &'static str,
    number: u32,
    department: Vec<String>,
}

#[derive(Getter, Setter)]
struct CompanyGen<T> where T: Debug {
    name: T,
    boss: &'static str,
    number: u32,
    department: Vec<String>,
}

#[derive(Getter, Setter)]
struct CompanyWrap {
    sub_company: CompanyGen<Company>,
    name: &'static str,
}

// Unit struct
#[derive(Getter, Setter, Debug)]
struct UnitStruct {}

fn main() {
    let mut xp = Company {
        name: "xp",
        boss: "Big Brother",
        number: u32::MAX,
        department: vec!["HR".to_owned(), "Finance".to_owned()],
    };
    println!("xp name = {:?} boss = {:?} number = {:?} department = {:?}", xp.get_name(), xp.get_boss(), xp.get_number(), xp.get_department());
    xp.set_name("set_name");
    xp.set_boss("set_boss");
    xp.set_number(u32::MIN);
    xp.set_department(vec!["department".to_owned()]);


    let xp_t = CompanyGen::<Company> {
        name: xp,
        boss: "Big Brother",
        number: u32::MAX,
        department: vec!["HR".to_owned(), "Finance".to_owned()],
    };
    println!("xp_t name = {:?} boss = {:?} number = {:?} department = {:?}", xp_t.get_name(), xp_t.get_boss(), xp_t.get_number(), xp_t.get_department());

    let xp_wrap = CompanyWrap {
        sub_company: xp_t,
        name: "xp_wrap",
    };
    println!("xp_wrap name = {:?} sub_company = {:?}", xp_wrap.get_name(), xp_wrap.get_sub_company().get_name());
    let unit = UnitStruct {};
    println!("unit = {:?}", unit);
}

see test for more example

Getting Help

You're also welcome to open an issue with your question.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in r-lombok-macros by you, shall be licensed as MIT, without any additional terms or conditions.

Dependencies

~1.5MB
~33K SLoC