Skip to main content

Attribute

Enum Attribute 

Source
pub enum Attribute {
    Parsed(AttributeKind),
    Tool(Box<AttrItem>),
    DeriveHelper(Box<AttrItem>),
}
Expand description

A high level representation of an attribute.

Not to be confused with ast::Attribute, which represents the syntax-level form of an attribute.

Variants§

§

Parsed(AttributeKind)

A parsed built-in attribute.

Parsed attributes don’t generally have a span associated with them. This is because multiple syntax-level attributes can be represented into a single semantic attribute. For example, an item can have multiple repr attributes on it, which will coalesce into a single AttributeKind::Repr, and the stable, unstable, and rustc_allowed_through_unstable_modules all combine into a single AttributeKind::Stability attribute. Most Attribute variants do have a Span field, though, mostly for the purpose of generating diagnostics later in the compilation process.

§

Tool(Box<AttrItem>)

A tool attribute.

Tool attributes, with the exception of diagnostic attributes, are not converted into a parsed form.

§

DeriveHelper(Box<AttrItem>)

A derive helper attribute.

Derive helper attributes serve no use beyond macro expansion, but they are useful to consumers of rustdoc-json, so we keep them around. See https://github.com/rust-lang/rust/issues/157107 for context.

Implementations§

Trait Implementations§

Source§

impl AttributeExt for Attribute

Source§

fn name(&self) -> Option<Symbol>

For a single-segment attribute, returns its name; otherwise, returns None.

Source§

fn meta_item_list(&self) -> Option<ThinVec<MetaItemInner>>

Get the meta item list, #[attr(meta item list)]
Source§

fn value_str(&self) -> Option<Symbol>

Gets the value literal, as string, when using #[attr = value]
Source§

fn value_span(&self) -> Option<Span>

Gets the span of the value literal, as string, when using #[attr = value]
Source§

fn path_matches(&self, name: &[Symbol]) -> bool

Checks whether the path of this attribute matches the name. Read more
Source§

fn is_doc_comment(&self) -> Option<Span>

Returns true if it is a sugared doc comment (/// or //! for example). So #[doc = "doc"] (which is a doc comment) and #[doc(...)] (which is not a doc comment) will return false.
Source§

fn is_word(&self) -> bool

Returns whether the attribute is a path, without any arguments.
Source§

fn symbol_path(&self) -> Option<SmallVec<[Symbol; 1]>>

Returns None for doc comments
Source§

fn path_span(&self) -> Option<Span>

Source§

fn doc_str(&self) -> Option<Symbol>

Returns the documentation if this is a doc comment or a sugared doc comment. Read more
Source§

fn doc_str_and_fragment_kind(&self) -> Option<(Symbol, DocFragmentKind, Span)>

Returns the documentation and its kind if this is a doc comment or a sugared doc comment. Read more
Source§

fn doc_resolution_scope(&self) -> Option<AttrStyle>

Returns outer or inner if this is a doc attribute or a sugared doc comment, otherwise None. Read more
Source§

fn is_proc_macro_attr(&self) -> bool

Returns whether this attribute is any of the proc macro attributes. i.e. proc_macro, proc_macro_attribute or proc_macro_derive.
Source§

fn is_doc_keyword_or_attribute(&self) -> bool

Returns true is this attribute contains doc(keyword) or doc(attribute).
Source§

fn is_rustc_doc_primitive(&self) -> bool

Returns true if this is a #[rustc_doc_primitive] attribute.
Source§

fn has_name(&self, name: Symbol) -> bool

Returns true if the attribute’s first and only path segment is equal to the passed-in symbol.
Source§

fn has_any_name(&self, names: &[Symbol]) -> bool

Returns true if the attribute’s first and only path segment is any of the passed-in symbols.
Source§

fn path(&self) -> SmallVec<[Symbol; 1]>

Source§

impl Clone for Attribute

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Attribute

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<__D: SpanDecoder> Decodable<__D> for Attribute

Source§

fn decode(__decoder: &mut __D) -> Self

Source§

impl<__E: SpanEncoder> Encodable<__E> for Attribute

Source§

fn encode(&self, __encoder: &mut __E)

Source§

impl StableHash for Attribute

Source§

fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Aligned for T

Source§

const ALIGN: Alignment

Alignment of Self.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

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: 40 bytes

Size for each variant:

  • Parsed: 40 bytes
  • Tool: 16 bytes
  • DeriveHelper: 16 bytes