Skip to main content

Module ext

Module ext 

Source
Expand description

Extension traits for common syn AST types. Extension traits for common syn AST types.

Provides ergonomic helpers for working with attributes, metadata, fields, types, data, and items in procedural macros. Requires the ext feature (zyn = { features = ["ext"] }).

§Overview

TraitTargetPurpose
[AttrExt]syn::AttributeName checking, argument parsing, dot-path metadata queries
[MetaExt]syn::MetaVariant predicates, conversions, nested navigation
[FieldExt]syn::FieldDot-path metadata queries on struct/enum fields
[FieldsExt]syn::Fields, syn::ItemStruct, etc.Variant predicates and field lookup via [FieldKey]
[TypeExt]syn::Type, syn::FieldDetecting Option/Result wrappers, inner type extraction
[DataExt]syn::DataVariant predicates and conversions for struct/enum/union data
[ItemExt]syn::ItemVariant predicates, conversions, and common field accessors
[VariantExt]syn::VariantDot-path metadata queries on enum variants

§Examples

use zyn::ext::{AttrExt, MetaExt, FieldExt, FieldsExt, FieldKey, TypeExt, DataExt, ItemExt, VariantExt};

// Attribute querying with dot-paths
if attr.is("serde") {
    let rename = attr.get("rename");
}

// Field attribute navigation
let meta = field.get("serde.rename");

// Fields lookup
let key: FieldKey = "id".into();
if let Some(f) = fields.get(&key) {
    // ...
}

// Type inspection
if field.is_option() {
    let inner = field.inner_type().unwrap();
}

// Data variant checking
if data.is_enum() {
    let e = data.as_enum().unwrap();
}

// Item accessors
let ident = item.ident();
let attrs = item.attrs();

Enums§

FieldKey
Identifies a struct field by name or position.

Traits§

AttrExt
Extension methods for a single syn::Attribute.
DataExt
Extension methods for syn::Data.
FieldExt
Extension methods for a single syn::Field.
FieldsExt
Extension methods for types that contain syn::Fields.
ItemExt
Extension methods for syn::Item.
MetaExt
Extension methods for a single syn::Meta.
TypeExt
Extension methods for detecting and unwrapping common type wrappers.
VariantExt
Extension methods for a single syn::Variant.