#pub #macro #fields #structs

macro pub_this

使你的结构体字段变为 pub

1 个不稳定版本

0.1.0 2022年11月15日

#1996进程宏

MIT 许可证

56KB
83

描述

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

此宏将在你的结构体字段前添加pub;注意:它不会在结构体前添加pub

示例

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}
}

展开

展开后是这样的

pic

依赖

~1.5MB
~35K SLoC