Crate amplify_syn[][src]

Expand description

Amplifying Rust language capabilities: helper functions for creating proc macro libraries

Examples

#[name] - single form #[name = "literal"] - optional single value #[name = TypeName] - path value #[name("literal", TypeName, arg = value)] - list of arguments

Macros

ident

Convenience macro for constructing [syn::Ident] from literals

Structs

AttrReq

Structure requirements for parametrized attribute

MetaArgList

Drop-in replacement for syn::NestedMeta, which allows to parse attributes which can have arguments made of either literal, path or MetaArgNameValue expressions.

MetaArgNameValue

Drop-in replacement for syn::MetaNameValue used for parsing named arguments inside attributes which name is always an proc_macro2::Ident (and not syn::Path) and value can be not only a literal, but of any valid rust type.

ParametrizedAttr

Representation for all allowed forms of #[attr(...)] attribute. If attribute has a multiple occurrences they are all assembled into a single list. Repeated named arguments are not allowed and result in errors.

SingularAttr

Structure describing a procedural macro attribute with an optional value. The means that if one has something like #[name1], #[name2 = "value"], #[name3 = ::std::path::PathBuf)] than name1, name2 = "value", and name3 = ::std::path::PathBuf are three different attributes which can be parsed and represented by the SingularAttr structure.

Enums

ArgValue

Value for attribute or attribute argument, i.e. for #[attr = value] and #[attr(arg = value)] this is the value part of the attribute. Can be either a single literal or a single valid rust type name

ArgValueReq

Requirements for attribute or named argument value presence

Attr

Internal structure representation of a proc macro attribute collected instances having some specific name (accessible via Attr::name()).

Error

Errors representing inconsistency in proc macro attribute structure

ListReq

Requirements for list elements. For instance, used in AttrReq for providing [ParametrizedAttr] fields requirements.

LiteralClass

Constrains for literal value type

MetaArg

Drop-in replacement for syn::NestedMeta, which allows to parse attributes which can have arguments made of either literal, path or MetaArgNameValue expressions.

TypeClass

Constrains for the possible types that a Rust value could have.

ValueClass

Constrains for attribute value type

ValueReq

Requirements for attribute or named argument value presence for a values with known class. If the value class is not known, use ArgValueReq instead.