6个版本 (3个重大更新)

新增 0.4.0 2024年8月19日
0.3.0 2023年12月27日
0.2.0 2023年9月21日
0.1.2 2023年7月9日
0.1.1 2023年6月28日

#481 in 过程宏

Download history 43/week @ 2024-05-03 31/week @ 2024-05-10 66/week @ 2024-05-17 74/week @ 2024-05-24 65/week @ 2024-05-31 45/week @ 2024-06-07 78/week @ 2024-06-14 76/week @ 2024-06-21 33/week @ 2024-06-28 30/week @ 2024-07-05 67/week @ 2024-07-12 79/week @ 2024-07-19 95/week @ 2024-07-26 64/week @ 2024-08-02 57/week @ 2024-08-09 224/week @ 2024-08-16

每月455次下载
32 个crate中使用 (2个直接使用)

Apache-2.0

16KB
294

derive_util

derive_util为derive宏提供工具。

struct visitor

struct visitor提供了对结构体类型的分发方法。实现者需要为命名字段、非命名字段和单元结构体实现。

要重写命名字段,声明方法 StructVisitor::visit_struct_named_fields

fn visit_struct_named_fields(
    &mut self,
    ty_name: &syn::Ident,
    ds: &syn::DataStruct,
    fields: &syn::FieldsNamed,
) -> Self::Output;

要重写非命名字段,声明方法 StructVisitor::visit_struct_unnamed_fields

fn visit_struct_unnamed_fields(
    &mut self,
    ty_name: &syn::Ident,
    ds: &syn::DataStruct,
    fields: &syn::FieldsUnnamed,
) -> Self::Output;

要重写单元结构体,声明方法 StructVisitor::visit_struct_unit

fn visit_struct_unit(&mut self, _ty_name: &syn::Ident, _ds: &syn::DataStruct) -> Self::Output;

enum visitor

要重写具有命名字段的枚举,声明方法 EnumVisitor::visit_enum_variant_named_field

fn visit_enum_variant_named_field(
    &mut self,
    ty_name: &syn::Ident,
    de: &syn::DataEnum,
    variant: &syn::Variant,
    fields: &syn::FieldsNamed,
) -> Self::VariantOutput;

要重写具有非命名字段的枚举,声明方法 EnumVisitor::visit_enum_variant_unnamed_field

fn visit_enum_variant_unnamed_field(
    &mut self,
    ty_name: &syn::Ident,
    de: &syn::DataEnum,
    variant: &syn::Variant,
    fields: &syn::FieldsUnnamed,
) -> Self::VariantOutput;

要重写单元枚举,声明方法 EnumVisitor::visit_enum_variant_unit

fn visit_enum_variant_unit(
    &mut self,
    ty_name: &syn::Ident,
    de: &syn::DataEnum,
    variant: &syn::Variant,
) -> Self::VariantOutput;

每个变体返回 Self::VariantOutput。将这些输出组合成一个 Self::Output

fn combine_variants(
    &mut self,
    ty_name: &syn::Ident,
    de: &syn::DataEnum,
    variants: &[Self::VariantOutput],
) -> Self::Output;

状态

维护跟踪。该库被认为是稳定的,如果一年内未更改,则将进入维护模式。此库最后更新于2023-09-23。

范围

此库将为 derive 宏提供核心 Rust 数据类型供访问者使用。

缺陷

  • 此库尚不完整,无法用于从其中派生的 prototk

文档

最新文档始终可在 docs.rs 上找到。

依赖关系

~1.5MB
~35K SLoC