#macro-derive #struct-fields #methods #getter #accessor #field #generate

getter-methods

派生宏,用于创建获取器/访问器方法

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

Download history 33/week @ 2024-05-10 159/week @ 2024-05-17 181/week @ 2024-05-24 212/week @ 2024-05-31 70/week @ 2024-06-07 15/week @ 2024-06-14 71/week @ 2024-06-28 75/week @ 2024-07-05 53/week @ 2024-07-12 118/week @ 2024-07-19 168/week @ 2024-07-26 153/week @ 2024-08-02 138/week @ 2024-08-09 48/week @ 2024-08-16

每月下载量577

MIT许可MIT

9KB
90

getter-methods

ci docs license

这是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