Struct amplify_syn::ParametrizedAttr[][src]

pub struct ParametrizedAttr {
    pub name: String,
    pub args: HashMap<String, ArgValue>,
    pub paths: Vec<Path>,
    pub string: Option<LitStr>,
    pub bytes: Option<LitByteStr>,
    pub chars: Vec<LitChar>,
    pub integers: Vec<LitInt>,
    pub floats: Vec<LitFloat>,
    pub bool: Option<LitBool>,
}
Expand description

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.

For situations like in #[attr("string literal")], ParametrizedAttr will have a name field set to attr, literal field set to Lit::LitStr(LitStr("string literal")), args will be an empty HashSet and paths will be represented by an empty vector.

Fields

name: String

Attribute name - attr part of #[attr(...)]

args: HashMap<String, ArgValue>

All attribute arguments that have form of #[attr(ident = "literal")] or #[attr(ident = TypeName)] mapped to their name identifiers.

paths: Vec<Path>

All attribute arguments that are paths or identifiers without any specific value, like #[attr(std::io::Error, crate, super::SomeType)].

NB: All named arguments without the value assigned are getting into this field by default, even if they do not represent any known rust path or type name, like #[attr(some_id, other)]. However, with ParametrizedAttr::check and ParametrizedAttr::checked those values matching ones specified in AttrReq::arg_req with values set to crate::ListReq::Predefined::default are moved into ParametrizedAttr::args.

string: Option<LitStr>

Unnamed string literal found within attribute arguments.

If multiple string literals are present they are concatenated into a single value, like it is done by the rust compiler for #[doc = "..."] attributes

bytes: Option<LitByteStr>

Unnamed byte string literal found within attribute arguments.

If multiple byte string literals are present they are concatenated into a single value, like it is done by the rust compiler for #[doc = "..."] attributes

chars: Vec<LitChar>

Unnamed char literals found within attribute arguments

integers: Vec<LitInt>

Unnamed integer literals found within attribute arguments

floats: Vec<LitFloat>

Unnamed float literals found within attribute arguments

bool: Option<LitBool>

Unnamed bool literal found within attribute arguments.

If multiple bool literals are present this will generate an error.

Implementations

Constructs named SingularAttr with empty internal data

Constructs ParametrizedAttr from a vector of all syn-parsed attributes, selecting attributes matching the provided name.

Constructs ParametrizedAttr from a given syn::Attribute

Returns literal value for a given argument with name name, if it is defined, or fails with Error::ArgValueRequired. See ArgValue::literal_value for the details.

Checks if the attribute has a verbatim argument matching the provided verbatim string.

Verbatim arguments are arguments in form of #[attr(verbatim1, verbatim2], i.e. path arguments containing single path segment and no value or nested arguments.

Returns set of verbatim attribute arguments.

Verbatim arguments are arguments in form of #[attr(verbatim1, verbatim2], i.e. path arguments containing single path segment and no value or nested arguments.

Merges data from the other into the self.

Errors

Does merging as in ParametrizedAttr::merge, but unlike it consumes the self and returns a merged structure in case of the successful operation. Useful in operation chains.

Enriches current attribute data by adding information from the provided syn::Attribute.

Errors

Performs enrich operation as in ParametrizedAttr::enrich, but unlike it consumes the self and returns an enriched structure in case of the successful operation. Useful in operation chains.

Fuses data from a nested attribute arguments (see Attribute) into the attribute parameters.

The operation is similar to the ParametrizedAttr::enrich with the only difference that enrichment operation takes the whole attribute, and fusion takes a nested meta data.

Performs enrich operation as in ParametrizedAttr::fuse, but unlike it consumes the self and returns an enriched structure in case of the successful operation. Useful in operation chains.

Checks that the structure meets provided value requirements (see AttrReq), generating Error if the requirements are not met.

The procedure modifies the ParametrizedAttr data in the following ways:

  1. First, it fills in ParametrizedAttr::paths, ParametrizedAttr::integers, ParametrizedAttr::floats, ParametrizedAttr::chars, ParametrizedAttr::bytes, ParametrizedAttr::string with default values from AttrReq::path_req, AttrReq::integer_req, AttrReq::float_req, AttrReq::char_req, AttrReq::bytes_req, AttrReq::string_req correspondingly.
  2. ParametrizedAttr::paths values matching ones specified in AttrReq::arg_req with values set to crate::ListReq::Predefined::default are moved into ParametrizedAttr::args field.

Performs check as in ParametrizedAttr::check, but unlike it consumes the self and returns a itself in case of the successful operation. Useful in operation chains.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.