rustc_metadata::creader

Struct CrateMetadataRef

Source
pub(crate) struct CrateMetadataRef<'a> {
    pub cdata: &'a CrateMetadata,
    pub cstore: &'a CStore,
}
Expand description

A reference to CrateMetadata that can also give access to whole crate store when necessary.

Fields§

§cdata: &'a CrateMetadata§cstore: &'a CStore

Implementations§

Source§

impl<'a> CrateMetadataRef<'a>

Source

fn missing(self, descr: &str, id: DefIndex) -> !

Source

fn raw_proc_macro(self, id: DefIndex) -> &'a ProcMacro

Source

fn opt_item_name(self, item_index: DefIndex) -> Option<Symbol>

Source

fn item_name(self, item_index: DefIndex) -> Symbol

Source

fn opt_item_ident(self, item_index: DefIndex, sess: &Session) -> Option<Ident>

Source

fn item_ident(self, item_index: DefIndex, sess: &Session) -> Ident

Source

pub(super) fn map_encoded_cnum_to_current(self, cnum: CrateNum) -> CrateNum

Source

fn def_kind(self, item_id: DefIndex) -> DefKind

Source

fn get_span(self, index: DefIndex, sess: &Session) -> Span

Source

fn load_proc_macro<'tcx>( self, id: DefIndex, tcx: TyCtxt<'tcx>, ) -> SyntaxExtension

Source

fn get_variant( self, kind: DefKind, index: DefIndex, parent_did: DefId, ) -> (VariantIdx, VariantDef)

Source

fn get_adt_def<'tcx>(self, item_id: DefIndex, tcx: TyCtxt<'tcx>) -> AdtDef<'tcx>

Source

fn get_visibility(self, id: DefIndex) -> Visibility<DefId>

Source

fn get_safety(self, id: DefIndex) -> Safety

Source

fn get_default_field(self, id: DefIndex) -> Option<DefId>

Source

fn get_trait_item_def_id(self, id: DefIndex) -> Option<DefId>

Source

fn get_expn_that_defined(self, id: DefIndex, sess: &Session) -> ExpnId

Source

fn get_debugger_visualizers(self) -> Vec<DebuggerVisualizerFile>

Source

fn get_lib_features(self) -> LibFeatures

Iterates over all the stability attributes in the given crate.

Source

fn get_stability_implications<'tcx>( self, tcx: TyCtxt<'tcx>, ) -> &'tcx [(Symbol, Symbol)]

Iterates over the stability implications in the given crate (when a #[unstable] attribute has an implied_by meta item, then the mapping from the implied feature to the actual feature is a stability implication).

Source

fn get_lang_items<'tcx>(self, tcx: TyCtxt<'tcx>) -> &'tcx [(DefId, LangItem)]

Iterates over the lang items in the given crate.

Source

fn get_stripped_cfg_items<'tcx>( self, cnum: CrateNum, tcx: TyCtxt<'tcx>, ) -> &'tcx [StrippedCfgItem]

Source

fn get_diagnostic_items(self) -> DiagnosticItems

Iterates over the diagnostic items in the given crate.

Source

fn get_mod_child(self, id: DefIndex, sess: &Session) -> ModChild

Source

fn get_module_children( self, id: DefIndex, sess: &'a Session, ) -> impl Iterator<Item = ModChild> + 'a

Iterates over all named children of the given module, including both proper items and reexports. Module here is understood in name resolution sense - it can be a mod item, or a crate root, or an enum, or a trait.

Source

fn is_ctfe_mir_available(self, id: DefIndex) -> bool

Source

fn is_item_mir_available(self, id: DefIndex) -> bool

Source

fn get_fn_has_self_parameter(self, id: DefIndex, sess: &'a Session) -> bool

Source

fn get_associated_item_or_field_def_ids( self, id: DefIndex, ) -> impl Iterator<Item = DefId> + 'a

Source

fn get_associated_item(self, id: DefIndex, sess: &'a Session) -> AssocItem

Source

fn get_ctor(self, node_id: DefIndex) -> Option<(CtorKind, DefId)>

Source

fn get_item_attrs( self, id: DefIndex, sess: &'a Session, ) -> impl Iterator<Item = Attribute> + 'a

Source

fn get_inherent_implementations_for_type<'tcx>( self, tcx: TyCtxt<'tcx>, id: DefIndex, ) -> &'tcx [DefId]

Source

fn get_traits(self) -> impl Iterator<Item = DefId> + 'a

Decodes all traits in the crate (for rustdoc and rustc diagnostics).

Source

fn get_trait_impls(self) -> impl Iterator<Item = DefId> + 'a

Decodes all trait impls in the crate (for rustdoc).

Source

fn get_incoherent_impls<'tcx>( self, tcx: TyCtxt<'tcx>, simp: SimplifiedType, ) -> &'tcx [DefId]

Source

fn get_implementations_of_trait<'tcx>( self, tcx: TyCtxt<'tcx>, trait_def_id: DefId, ) -> &'tcx [(DefId, Option<SimplifiedType>)]

Source

fn get_native_libraries( self, sess: &'a Session, ) -> impl Iterator<Item = NativeLib> + 'a

Source

fn get_proc_macro_quoted_span(self, index: usize, sess: &Session) -> Span

Source

fn get_foreign_modules( self, sess: &'a Session, ) -> impl Iterator<Item = ForeignModule> + 'a

Source

fn get_dylib_dependency_formats<'tcx>( self, tcx: TyCtxt<'tcx>, ) -> &'tcx [(CrateNum, LinkagePreference)]

Source

fn get_missing_lang_items<'tcx>(self, tcx: TyCtxt<'tcx>) -> &'tcx [LangItem]

Source

fn exported_symbols<'tcx>( self, tcx: TyCtxt<'tcx>, ) -> &'tcx [(ExportedSymbol<'tcx>, SymbolExportInfo)]

Source

fn get_macro(self, id: DefIndex, sess: &Session) -> MacroDef

Source

fn def_key(self, index: DefIndex) -> DefKey

Source

fn def_path(self, id: DefIndex) -> DefPath

Source

fn def_path_hash(self, index: DefIndex) -> DefPathHash

Source

fn def_path_hash_to_def_index(self, hash: DefPathHash) -> DefIndex

Source

fn expn_hash_to_expn_id( self, sess: &Session, index_guess: u32, hash: ExpnHash, ) -> ExpnId

Source

fn imported_source_file( self, source_file_index: u32, sess: &Session, ) -> ImportedSourceFile

Imports the source_map from an external crate into the source_map of the crate currently being compiled (the “local crate”).

The import algorithm works analogous to how AST items are inlined from an external crate’s metadata: For every SourceFile in the external source_map an ‘inline’ copy is created in the local source_map. The correspondence relation between external and local SourceFiles is recorded in the ImportedSourceFile objects returned from this function. When an item from an external crate is later inlined into this crate, this correspondence information is used to translate the span information of the inlined item so that it refers the correct positions in the local source_map (see <decoder::DecodeContext as SpecializedDecoder<Span>>).

The import algorithm in the function below will reuse SourceFiles already existing in the local source_map. For example, even if the SourceFile of some source file of libstd gets imported many times, there will only ever be one SourceFile object for the corresponding file in the local source_map.

Note that imported SourceFiles do not actually contain the source code of the file they represent, just information about length, line breaks, and multibyte characters. This information is enough to generate valid debuginfo for items inlined from other crates.

Proc macro crates don’t currently export spans, so this function does not have to work for them.

Source

fn get_attr_flags(self, index: DefIndex) -> AttrFlags

Source

fn get_intrinsic(self, index: DefIndex) -> Option<IntrinsicDef>

Methods from Deref<Target = CrateMetadata>§

Source

pub(crate) fn dependencies(&self) -> impl Iterator<Item = CrateNum> + '_

Source

pub(crate) fn source(&self) -> &CrateSource

Source

pub(crate) fn dep_kind(&self) -> CrateDepKind

Source

pub(crate) fn used(&self) -> bool

Source

pub(crate) fn required_panic_strategy(&self) -> Option<PanicStrategy>

Source

pub(crate) fn needs_panic_runtime(&self) -> bool

Source

pub(crate) fn is_panic_runtime(&self) -> bool

Source

pub(crate) fn is_profiler_runtime(&self) -> bool

Source

pub(crate) fn needs_allocator(&self) -> bool

Source

pub(crate) fn has_global_allocator(&self) -> bool

Source

pub(crate) fn has_alloc_error_handler(&self) -> bool

Source

pub(crate) fn has_default_lib_allocator(&self) -> bool

Source

pub(crate) fn is_proc_macro_crate(&self) -> bool

Source

pub(crate) fn name(&self) -> Symbol

Source

pub(crate) fn hash(&self) -> Svh

Source

fn num_def_ids(&self) -> usize

Source

fn local_def_id(&self, index: DefIndex) -> DefId

Source

fn reverse_translate_def_id(&self, did: DefId) -> Option<DefId>

Trait Implementations§

Source§

impl<'a> Clone for CrateMetadataRef<'a>

Source§

fn clone(&self) -> CrateMetadataRef<'a>

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Deref for CrateMetadataRef<'_>

Source§

type Target = CrateMetadata

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'a, 'tcx> Metadata<'a, 'tcx> for CrateMetadataRef<'a>

Source§

fn blob(self) -> &'a MetadataBlob

Source§

fn cdata(self) -> Option<CrateMetadataRef<'a>>

Source§

fn sess(self) -> Option<&'tcx Session>

Source§

fn tcx(self) -> Option<TyCtxt<'tcx>>

Source§

fn decoder(self, pos: usize) -> DecodeContext<'a, 'tcx>

Source§

impl<'a> Copy for CrateMetadataRef<'a>

Auto Trait Implementations§

§

impl<'a> DynSend for CrateMetadataRef<'a>

§

impl<'a> DynSync for CrateMetadataRef<'a>

§

impl<'a> Freeze for CrateMetadataRef<'a>

§

impl<'a> !RefUnwindSafe for CrateMetadataRef<'a>

§

impl<'a> !Send for CrateMetadataRef<'a>

§

impl<'a> !Sync for CrateMetadataRef<'a>

§

impl<'a> Unpin for CrateMetadataRef<'a>

§

impl<'a> !UnwindSafe for CrateMetadataRef<'a>

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<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

Source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T

Source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]

Source§

impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

Source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T

Source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]

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, dst: *mut u8)

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

impl<T, R> CollectAndApply<T, R> for T

Source§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

Source§

type Output = R

Source§

impl<T> Filterable for T

Source§

fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>

Creates a filterable data provider with the given name for debugging. Read more
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<P> IntoQueryParam<P> for P

Source§

impl<T> MaybeResult<T> for T

Source§

type Error = !

Source§

fn from(_: Result<T, <T as MaybeResult<T>>::Error>) -> T

Source§

fn to_result(self) -> Result<T, <T as MaybeResult<T>>::Error>

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<I, T, U> Upcast<I, U> for T
where U: UpcastFrom<I, T>,

Source§

fn upcast(self, interner: I) -> U

Source§

impl<I, T> UpcastFrom<I, T> for T

Source§

fn upcast_from(from: T, _tcx: I) -> T

Source§

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

Source§

fn vzip(self) -> V

Source§

impl<Tcx, T> Value<Tcx> for T
where Tcx: DepContext,

Source§

default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T

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
Source§

impl<'a, T> Captures<'a> for T
where T: ?Sized,

Source§

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

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