Darling is a tool for declarative attribute parsing in proc macro implementations.
Darling takes considerable design inspiration from [
serde]. A data structure that can be
read from any attribute implements
FromMetaItem (or has an implementation automatically
derive). Any crate can provide
FromMetaItem implementations, even one not
specifically geared towards proc-macro authors.
Proc-macro crates should provide their own structs which implement or derive
FromField to gather settings relevant to their operation.
There are a number of attributes that
darling exposes to enable finer-grained control over the code
- Field renaming: You can use
#[darling(rename="new_name")]on a field to change the name Darling looks for. You can also use
#[darling(rename_all="...")]at the struct or enum level to apply a casing rule to all fields or variants.
- Map function: You can use
#[darling(map="path::to::function")]to run code on a field before its stored in the struct.
- Default values: You can use
#[darling(default)]at the type or field level to use that type's default value to fill in values not specified by the caller.
- Skipped fields: You can skip a variant or field using
#[darling(skip)]. Fields marked with this will fall back to
Default::default()for their value, but you can override that with an explicit default or a value from the type-level default.
FromField support forwarding fields from the input AST directly
to the derived struct. These fields are matched up by identifier before
rename attribute values are
considered. The deriving struct is responsible for making sure the types of fields it does declare match this
A deriving struct is free to include or exclude any of the fields below.
|The identifier of the passed-in type|
|The visibility of the passed-in type|
|The generics of the passed-in type|
|The body of the passed-in type|
|The forwarded attributes from the passed in type. These are controlled using the |
|The identifier of the passed-in field|
|The visibility of the passed-in field|
|The type of the passed-in field|
|The forwarded attributes from the passed in field. These are controlled using the |
Utility types for working with the AST.
Types for working with darling errors and results.
Utility types for attribute parsing.
An error encountered during attribute parsing.
Creates an instance by parsing an entire proc-macro
Creates an instance by parsing an individual field and its attributes.
Create an instance from an item in an attribute declaration.
Creates an instance from a specified
An alias of