Enum amplify_syn::Attr
source · pub enum Attr {
Singular(SingularAttr),
Parametrized(ParametrizedAttr),
}
Expand description
Internal structure representation of a proc macro attribute collected
instances having some specific name (accessible via Attr::name()
).
Variants§
Singular(SingularAttr)
Attribute of #[attr]
or #[attr = value]
form, which, aside from the
case where value
is a string literal, may have only a single
occurrence (string literals are concatenated into a single value like
rust compiler does for #[doc = "..."]
attributes).
Parametrized(ParametrizedAttr)
Parametrized attribute in form of #[attr(...)]
, where parameters are
gathered from all attribute occurrences.
Implementations§
source§impl Attr
impl Attr
sourcepub fn with(
name: impl ToString + AsRef<str>,
attrs: &[Attribute]
) -> Result<Self, Error>
pub fn with( name: impl ToString + AsRef<str>, attrs: &[Attribute] ) -> Result<Self, Error>
Constructs Attr
from a vector of all syn-parsed attributes,
selecting attributes matching the provided name.
sourcepub fn from_attribute(attr: &Attribute) -> Result<Self, Error>
pub fn from_attribute(attr: &Attribute) -> Result<Self, Error>
Constructor parsing Attribute
value and returning either
SingularAttr
or ParametrizedAttr
packed in form of Attr
enum.
If the attribute does not match either of forms, a Error
is
returned. Currently, only single type of error may occur in practice:
Error::ArgNameMustBeIdent
, which happens if the attribute name is not ansyn::Ident
but is a complex path value
sourcepub fn try_singular(self) -> Result<SingularAttr, Error>
pub fn try_singular(self) -> Result<SingularAttr, Error>
Returns inner value \in form of SingularAttr
for Attr::Singular
variant, or fails with Error::SingularAttrRequired
otherwise
sourcepub fn try_parametrized(self) -> Result<ParametrizedAttr, Error>
pub fn try_parametrized(self) -> Result<ParametrizedAttr, Error>
Returns inner value \in form of ParametrizedAttr
for
Attr::Parametrized
variant, or fails with
Error::ParametrizedAttrRequired
otherwise
sourcepub fn arg_value(&self) -> Result<ArgValue, Error>
pub fn arg_value(&self) -> Result<ArgValue, Error>
Returns ArgValue
for the Attr::Singular
variant or fails with
Error::ParametrizedAttrHasNoValue
sourcepub fn literal_value(&self) -> Result<Lit, Error>
pub fn literal_value(&self) -> Result<Lit, Error>
Returns literal value for the Attr::Singular
variant or fails with
Error::ParametrizedAttrHasNoValue
. See
ArgValue::to_literal_value
for more details.
sourcepub fn type_value(&self) -> Result<Type, Error>
pub fn type_value(&self) -> Result<Type, Error>
Returns type value for the Attr::Singular
variant or fails with
Error::ParametrizedAttrHasNoValue
. See
ArgValue::to_literal_value
for more details.