Crate amplify_syn[][src]

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

Structs

AttrReq

Structure requirements for parametrized attribute

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

ArgReq

Requirements for attribute or named argument value presence

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

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

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