pub struct Item {
pub id: Id,
pub crate_id: u32,
pub name: Option<String>,
pub span: Option<Span>,
pub visibility: Visibility,
pub docs: Option<String>,
pub links: HashMap<String, Id>,
pub attrs: Vec<Attribute>,
pub deprecation: Option<Deprecation>,
pub stability: Option<Box<Stability>>,
pub const_stability: Option<Box<Stability>>,
pub inner: ItemEnum,
}Expand description
Anything that can hold documentation - modules, structs, enums, functions, traits, etc.
The Item data type holds fields that can apply to any of these,
and leaves kind-specific details (like function args or enum variants) to the inner field.
Fields§
§id: IdThe unique identifier of this item. Can be used to find this item in various mappings.
crate_id: u32This can be used as a key to the external_crates map of Crate to see which crate
this item came from.
name: Option<String>Some items such as impls don’t have names.
span: Option<Span>The source location of this item (absent if it came from a macro expansion or inline assembly).
visibility: VisibilityBy default all documented items are public, but you can tell rustdoc to output private items so this field is needed to differentiate.
docs: Option<String>The full markdown docstring of this item. Absent if there is no documentation at all,
Some(“”) if there is some documentation but it is empty (EG #[doc = ""]).
links: HashMap<String, Id>This mapping resolves intra-doc links from the docstring to their IDs
attrs: Vec<Attribute>Attributes on this item.
Does not include:
#[doc = "Doc Comment"]or/// Doc comment: seeSelf::docsinstead.#[deprecated]attributes: see theSelf::deprecationfield instead.#[stable]and#[unstable]attributes: see theSelf::stabilityfield instead.#[rustc_const_stable]and#[rustc_const_unstable]attributes: see theSelf::const_stabilityfield instead.#[rustc_default_body_unstable]attributes: instead seedefault_unstablefields on item kinds that can have unstable default values, such asFunction::default_unstable,ItemEnum::AssocConst::default_unstable, andItemEnum::AssocType::default_unstable.
Attributes appear in pretty-printed Rust form, regardless of their formatting in the original source code. For example:
#[non_exhaustive]and#[must_use]are represented as themselves.#[no_mangle]and#[export_name]are also represented as themselves.#[repr(C)]and other reprs also appear as themselves, though potentially with a different order: e.g.repr(i8, C)may becomerepr(C, i8). Multiple repr attributes on the same item may be combined into an equivalent single attr.
deprecation: Option<Deprecation>Information about the item’s deprecation, if present.
stability: Option<Box<Stability>>Stability information for this item, if any.
This describes whether the item itself is stable or unstable, as noted by a #[stable] or
#[unstable] attribute. It does not capture const stability, default-body stability, etc.
Whether a path to an item is stable depends on the stability of containing modules or re-exports along that path. For example, a stable item can be reachable through both an unstable module and a stable re-export.
For items whose inner kind is ItemEnum::Use, this is the stability of the import itself,
not the item being imported. This allows users to determine the stability of paths
that involve re-exports.
Associated items can inherit instability from their enclosing unstable trait or impl. Unannotated associated items in stable traits or impls may have no separate stability value.
Currently, Rust’s #[stable] and #[unstable] attributes are themselves not stable.
As a result, this field is primarily populated for standard-library items;
most ordinary third-party crates usually have no data here.
const_stability: Option<Box<Stability>>Stability information for using this item in const contexts, if any.
This is separate from Self::stability. An item can be stable as regular API while its
const use is unstable. An unstable item may have no separate const-stability value here.
This field is only populated for item kinds whose const behavior can have separate stability information, such as const functions, const traits, const trait impls, and associated items whose const behavior is controlled by a const trait or const impl.
inner: ItemEnumThe type-specific fields describing this item.