#field-name #struct-fields #proc-macro #macro #query #database

runtime-struct-field-names-as-array

提供生成命名结构体字段名数组的进程宏

1 个不稳定版本

0.1.0 2023年3月21日

#735过程宏

Download history 4284/week @ 2024-03-25 6655/week @ 2024-04-01 8397/week @ 2024-04-08 9957/week @ 2024-04-15 8664/week @ 2024-04-22 13658/week @ 2024-04-29 16239/week @ 2024-05-06 14612/week @ 2024-05-13 33422/week @ 2024-05-20 25921/week @ 2024-05-27 30668/week @ 2024-06-03 32710/week @ 2024-06-10 30425/week @ 2024-06-17 32224/week @ 2024-06-24 21317/week @ 2024-07-01 12628/week @ 2024-07-08

96,807 每月下载量

MIT 许可证

8KB
85

runtime-struct-field-names-as-array

crate-name at crates.io crate-name at docs.rs Rust

提供 FieldNamesAsArray 过程宏。该宏将 field_names_as_array() 函数添加到过程宏所派生的结构体中。它包含给定结构体的字段名,包括父结构体的字段名

注意:此宏只能从命名结构体派生。

重要:此crate存在运行时开销,选项有限。如果您不打算在嵌套结构体上使用它,请使用此 crate。请参阅 讨论

目录

用法

您可以通过这种方式派生 FieldNamesAsArray

use runtime_struct_field_names_as_array::FieldNamesAsArray;

#[derive(FieldNamesAsArray)]
struct Foo {
  bar: String,
  baz: String,
  bat: String,
}

assert_eq!(Foo::field_names_as_array(), ["bar", "baz", "bat"]);

属性

FieldNamesAsArray 宏支持 field_names_as_array 属性。 field_names_as_array 可以通过仅添加 flatten 属性应用于字段

容器属性

容器属性是全局属性,它改变整个字段名数组的行为,而不是单个字段的行为。

字段属性

字段属性可以添加到命名结构体的字段中,并改变单个字段的行为。

Flatten

flatten 属性将添加父字段。也支持选项结构体。如果未在结构体类型上添加此属性,则将其视为常规字段。

use runtime_struct_field_names_as_array::FieldNamesAsArray;

#[derive(FieldNamesAsArray)]
struct Parent {
  foo: String,
}

#[derive(FieldNamesAsArray)]
struct Foo {
  bar: String,
  baz: String,
  #[field_names_as_array(flatten)]
  parent: Parent,
  #[field_names_as_array(flatten)]
  parent_option: Option<Parent>,
  another_parent: Parent,
}

assert_eq!(Foo::field_names_as_array(), ["bar", "baz", "parent.foo", "parent_option.foo", "another_parent"]);

依赖项

~320–790KB
~19K SLoC