#pub #macro

macro pub_this

Make your structs' fields be pub

1 unstable release

0.1.0 Nov 15, 2022

#1833 in Procedural macros

MIT license

56KB
83 lines

Description

这个宏让你的struct的字段变为 pub ,省去在每个字段名前加pub的操作;注意 仅仅作用于字段上,对struct的可见性没有影响

This macro add pub before your structs' fields; Notice: It won't add pub before your structs

Example

use pub_this::pub_this;

#[pub_this]
struct Father<T> {
    pub name: String,
    age: usize,
    child: T,
}

mod children{
    use pub_this::pub_this;
    #[pub_this]
    pub struct Son {
        name: String,
        age: usize,
    }

    pub struct Daughter {
        name: String,
        age: usize,
    }
}

fn main() {
    let f1 = Father {
        name: "me".to_string(),
        age: 55,
        child: children::Son {
            name: "You".to_string(),
            age: 10,
        },
    };
    let f2 = Father {
        name: "me".to_string(),
        age: 55,
        child: children::Daughter {
            name: "You".to_string(), // hint private field
            age: 10, // hint private field
        },
    };
    println!{"{}",f1.child.name}
}

Expand

Here is what it looks like after expand

pic

Dependencies

~1.5MB
~35K SLoC