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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Attr
impl RefUnwindSafe for Attr
impl !Send for Attr
impl !Sync for Attr
impl Unpin for Attr
impl UnwindSafe for Attr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 288 bytes
Size for each variant:
Singular
: 288 bytesParametrized
: 200 bytes