Crate derive_util

Source
Expand description

§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.

Traits§

EnumVisitor
EnumVisitor provides default implementations for panicking when visiting an enum. Provide implementations of EnumVisitor::combine_variants, and at least one of EnumVisitor::visit_enum_variant_named_field, EnumVisitor::visit_enum_variant_unnamed_field, and EnumVisitor::visit_enum_variant_unit.
StructVisitor
StructVisitor provides default implementations for panicking when visiting a struct. Override StructVisitor::visit_struct_named_fields, StructVisitor::visit_struct_unnamed_fields, and StructVisitor::visit_struct_unit to support the three different struct types.