1 个不稳定版本
0.1.0 | 2022年4月17日 |
---|
#1970 in 过程宏
20KB
511 行
Accessors派生宏
生成用于访问结构体字段的impl的派生宏。
使用 #[accessors(get, get_mut, set)]
定义你想要在字段上拥有的访问器。
accessors
参数列表。
get
: 生成返回引用的getter。get_copy
: 生成返回复制的getter。 (与get互斥)get_mut
: 生成返回可变引用的可变getter。set
: 生成setter。
在一个 字段 上使用 #[accessors(...)]
将为该特定字段生成访问器。
在一个 结构体 上使用 #[accessors(...)]
将为结构体中的所有字段生成访问器。
示例
仅对字段使用 accessors
的示例。
#[derive(Accessors)]
struct MyStruct {
#[accessors(get_copy, get_mut)]
#[accessors(set)] // Can use multiple `#[accessors(...)]`
a: u8,
#[accessors(get, get_mut, set)]
b: String,
}
对结构体使用 accessors
的示例。
#[derive(Accessors)]
#[accessors(get, get_mut, set)]
struct MyStruct {
#[accessors(get_copy)] // `get_copy` will overwrite `get`.
a: u8,
b: String,
}
这两个示例是等效的,并将生成相同的代码
impl MyStruct {
pub fn a(&self) -> u8 {
self.a
}
pub fn a_mut(&mut self) -> &mut u8 {
&mut self.a
}
pub fn set_a(&mut self, a: u8) {
self.a = a;
}
pub fn b(&self) -> &String {
&self.b
}
pub fn b_mut(&mut self) -> &mut String {
&mut self.b
}
pub fn set_b(&mut self, b: String) {
self.b = b;
}
依赖关系
~1.5MB
~35K SLoC