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::Identbut 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