5个版本 (2个稳定版本)
1.1.0 | 2024年5月30日 |
---|---|
1.0.0 | 2023年9月21日 |
0.3.0 | 2023年9月21日 |
0.2.0 | 2023年9月20日 |
0.1.0 | 2023年9月19日 |
在过程宏中排名第323
每月下载量577次
9KB
90 行
getter-methods
这是getter-methods
,一个派生宏,它将为结构体中的每个字段生成访问器方法的impl。
使用getter-methods
很简单:只需派生它
use getter_methods::GetterMethods;
#[derive(GetterMethods)]
struct Foo {
bar: String,
baz: i64,
}
let foo = Foo { bar: "bacon".into(), baz: 42 };
assert_eq!(foo.bar(), "bacon");
assert_eq!(foo.baz(), 42);
更多信息,请参阅文档。
lib.rs
:
getter_methods
是一个派生宏,它将为结构体中的每个字段实现访问器方法。
使用getter_methods
很简单:只需派生它
use getter_methods::GetterMethods;
#[derive(GetterMethods)]
struct Foo {
bar: String,
baz: i64,
}
let foo = Foo { bar: "bacon".into(), baz: 42 };
assert_eq!(foo.bar(), "bacon");
assert_eq!(foo.baz(), 42);
返回类型
访问器将根据结构体字段类型获得方便的返回类型
结构体字段 | 访问器返回类型 |
---|---|
字符串 |
[&str ][str ] |
原始类型 T (例如 [i64 ]) |
T |
任何其他 T |
&T |
返回副本
如果您想要一个实现Copy
的非原始类型T
并返回其本身而不是引用,请使用#[getter_methods)
对其进行注释
use getter_methods::GetterMethods;
#[derive(GetterMethods)]
struct Foo {
#[getter_methods(copy)]
bar: Option<i64>,
}
跳过字段
如果您不希望某些字段有访问器方法,请对其进行注释
use getter_methods::GetterMethods;
#[derive(GetterMethods)]
struct Foo {
bar: String,
#[getter_methods(skip)]
baz: i64,
}
let foo = Foo { bar: "bacon".into(), baz: 42 }
assert_eq!(foo.bar(), "bacon");
assert_eq!(foo.baz(), 42); // Compile error: There is no `foo.baz()`.
文档
字段上使用的任何文档字符串都将复制到访问器方法中。
依赖关系
~260–710KB
~17K SLoC