6 releases (3 breaking)

0.4.0 Aug 19, 2024
0.3.0 Dec 27, 2023
0.2.0 Sep 21, 2023
0.1.2 Jul 9, 2023
0.1.1 Jun 28, 2023

#456 in Procedural macros

Download history 73/week @ 2024-08-05 48/week @ 2024-08-12 263/week @ 2024-08-19 145/week @ 2024-08-26 79/week @ 2024-09-02 72/week @ 2024-09-09 126/week @ 2024-09-16 120/week @ 2024-09-23 72/week @ 2024-09-30 88/week @ 2024-10-07 75/week @ 2024-10-14 61/week @ 2024-10-21 97/week @ 2024-10-28 143/week @ 2024-11-04 140/week @ 2024-11-11 225/week @ 2024-11-18

622 downloads per month
Used in 37 crates (2 directly)

Apache-2.0

16KB
294 lines

derive_util

derive_util provides tools for derive macros.

struct visitor

The struct visitor provides a method that dispatches over the type of struct. It is up to the implementor to implement for named-fields, unnamed-fields, and the unit struct.

To override named fields, declare method StructVisitor::visit_struct_named_fields.

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

To override unnamed fields, declare method StructVisitor::visit_struct_unnamed_fields.

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

To override the unit struct, declare method StructVisitor::visit_struct_unit.

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

enum visitor

To override the struct with named fields, declare method 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;

To override the struct with unnamed fields, declare method 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;

To override the unit enum, declare method EnumVisitor::visit_enum_variant_unit.

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

Each variant returns Self::VariantOutput. Combine these outputs into one Self::Output.

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

Status

Maintenance track. The library is considered stable and will be put into maintenance mode if unchanged for one year. This library was last updated 2023-09-23.

Scope

This library will provide visitors for the core rust data types for use in derive macros.

Warts

  • The library is not complete enough to be used in prototk from which it was derived.

Documentation

The latest documentation is always available at docs.rs.

Dependencies

~1.5MB
~37K SLoC