#attributes #visibility #encapsulation #boilerplate #macro

macro disclose

用于设置容器元素默认可见性的属性宏

1个不稳定版本

0.9.1 2023年8月21日

#11#封装


用于 lemurs-8080

MIT 许可证

7KB
114

disclose

disclose 是一个宏crate,旨在加快创建具有大量公共组件的模块的过程。

disclose 为您的包添加了一个特性,即 #[disclose] 属性。将此属性添加到模块中的任何内容(mod、impl、struct等),它将有效地使该作用域内的所有内容都变为 pub。它不会影响已经带有可见性修饰符的内容,所以如果你的结构体包含一个需要保持私有的字段和三十个需要公开的字段,你可以用 pub(self) 标记那个私有字段,并用 #[disclose] 装饰结构体。

您可以将 disclose 与作用域作为参数使用,并应用该作用域。因此,标记为 #[disclose(super)] 的模块将处理每个没有自己的可见性标签的元素,将其视为 pub(super)。因此,

#[disclose(self)]
pub struct Foo {
	bar: usize;
	pub baz: String;
	pub(super) fud: Box<Foo>;
	bro: i32;
}

将展开为

pub struct Foo {
	pub(self) bar: usize;
	pub baz: String;
	pub(super) fud: Box<Foo>;
	pub(self) bro: i32;
}

(注意,Foobazfud 没有改变,因为它们已经有了可见性注释。)

依赖

~1.5MB
~35K SLoC