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>
impl<'a> CrateMetadataRef<'a>
fn missing(self, descr: &str, id: DefIndex) -> !
fn raw_proc_macro(self, id: DefIndex) -> &'a ProcMacro
fn opt_item_name(self, item_index: DefIndex) -> Option<Symbol>
fn item_name(self, item_index: DefIndex) -> Symbol
fn opt_item_ident(self, item_index: DefIndex, sess: &Session) -> Option<Ident>
fn item_ident(self, item_index: DefIndex, sess: &Session) -> Ident
pub(super) fn map_encoded_cnum_to_current(self, cnum: CrateNum) -> CrateNum
fn def_kind(self, item_id: DefIndex) -> DefKind
fn get_span(self, index: DefIndex, sess: &Session) -> Span
fn load_proc_macro<'tcx>( self, id: DefIndex, tcx: TyCtxt<'tcx>, ) -> SyntaxExtension
fn get_variant( self, kind: DefKind, index: DefIndex, parent_did: DefId, ) -> (VariantIdx, VariantDef)
fn get_adt_def<'tcx>(self, item_id: DefIndex, tcx: TyCtxt<'tcx>) -> AdtDef<'tcx>
fn get_visibility(self, id: DefIndex) -> Visibility<DefId>
fn get_trait_item_def_id(self, id: DefIndex) -> Option<DefId>
fn get_expn_that_defined(self, id: DefIndex, sess: &Session) -> ExpnId
fn get_debugger_visualizers(self) -> Vec<DebuggerVisualizerFile>
Sourcefn get_lib_features(self) -> LibFeatures
fn get_lib_features(self) -> LibFeatures
Iterates over all the stability attributes in the given crate.
Sourcefn get_stability_implications<'tcx>(
self,
tcx: TyCtxt<'tcx>,
) -> &'tcx [(Symbol, Symbol)]
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).
Sourcefn get_lang_items<'tcx>(self, tcx: TyCtxt<'tcx>) -> &'tcx [(DefId, LangItem)]
fn get_lang_items<'tcx>(self, tcx: TyCtxt<'tcx>) -> &'tcx [(DefId, LangItem)]
Iterates over the lang items in the given crate.
fn get_stripped_cfg_items<'tcx>( self, cnum: CrateNum, tcx: TyCtxt<'tcx>, ) -> &'tcx [StrippedCfgItem]
Sourcefn get_diagnostic_items(self) -> DiagnosticItems
fn get_diagnostic_items(self) -> DiagnosticItems
Iterates over the diagnostic items in the given crate.
fn get_mod_child(self, id: DefIndex, sess: &Session) -> ModChild
Sourcefn get_module_children(
self,
id: DefIndex,
sess: &'a Session,
) -> impl Iterator<Item = ModChild> + 'a
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.
fn is_ctfe_mir_available(self, id: DefIndex) -> bool
fn is_item_mir_available(self, id: DefIndex) -> bool
fn get_fn_has_self_parameter(self, id: DefIndex, sess: &'a Session) -> bool
fn get_associated_item_or_field_def_ids( self, id: DefIndex, ) -> impl Iterator<Item = DefId> + 'a
fn get_associated_item(self, id: DefIndex, sess: &'a Session) -> AssocItem
fn get_ctor(self, node_id: DefIndex) -> Option<(CtorKind, DefId)>
fn get_item_attrs( self, id: DefIndex, sess: &'a Session, ) -> impl Iterator<Item = Attribute> + 'a
fn get_inherent_implementations_for_type<'tcx>( self, tcx: TyCtxt<'tcx>, id: DefIndex, ) -> &'tcx [DefId]
Sourcefn get_traits(self) -> impl Iterator<Item = DefId> + 'a
fn get_traits(self) -> impl Iterator<Item = DefId> + 'a
Decodes all traits in the crate (for rustdoc and rustc diagnostics).
Sourcefn get_trait_impls(self) -> impl Iterator<Item = DefId> + 'a
fn get_trait_impls(self) -> impl Iterator<Item = DefId> + 'a
Decodes all trait impls in the crate (for rustdoc).
fn get_incoherent_impls<'tcx>( self, tcx: TyCtxt<'tcx>, simp: SimplifiedType, ) -> &'tcx [DefId]
fn get_implementations_of_trait<'tcx>( self, tcx: TyCtxt<'tcx>, trait_def_id: DefId, ) -> &'tcx [(DefId, Option<SimplifiedType>)]
fn get_native_libraries( self, sess: &'a Session, ) -> impl Iterator<Item = NativeLib> + 'a
fn get_proc_macro_quoted_span(self, index: usize, sess: &Session) -> Span
fn get_foreign_modules( self, sess: &'a Session, ) -> impl Iterator<Item = ForeignModule> + 'a
fn get_dylib_dependency_formats<'tcx>( self, tcx: TyCtxt<'tcx>, ) -> &'tcx [(CrateNum, LinkagePreference)]
fn get_missing_lang_items<'tcx>(self, tcx: TyCtxt<'tcx>) -> &'tcx [LangItem]
fn exported_symbols<'tcx>( self, tcx: TyCtxt<'tcx>, ) -> &'tcx [(ExportedSymbol<'tcx>, SymbolExportInfo)]
fn get_macro(self, id: DefIndex, sess: &Session) -> MacroDef
fn def_key(self, index: DefIndex) -> DefKey
fn def_path(self, id: DefIndex) -> DefPath
fn def_path_hash(self, index: DefIndex) -> DefPathHash
fn def_path_hash_to_def_index(self, hash: DefPathHash) -> DefIndex
fn expn_hash_to_expn_id( self, sess: &Session, index_guess: u32, hash: ExpnHash, ) -> ExpnId
Sourcefn imported_source_file(
self,
source_file_index: u32,
sess: &Session,
) -> ImportedSourceFile
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.
fn get_attr_flags(self, index: DefIndex) -> AttrFlags
fn get_intrinsic(self, index: DefIndex) -> Option<IntrinsicDef>
fn get_doc_link_resolutions(self, index: DefIndex) -> DocLinkResMap
fn get_doc_link_traits_in_scope( self, index: DefIndex, ) -> impl Iterator<Item = DefId> + 'a
Methods from Deref<Target = CrateMetadata>§
pub(crate) fn dependencies(&self) -> impl Iterator<Item = CrateNum> + '_
pub(crate) fn source(&self) -> &CrateSource
pub(crate) fn dep_kind(&self) -> CrateDepKind
pub(crate) fn used(&self) -> bool
pub(crate) fn required_panic_strategy(&self) -> Option<PanicStrategy>
pub(crate) fn needs_panic_runtime(&self) -> bool
pub(crate) fn is_panic_runtime(&self) -> bool
pub(crate) fn is_profiler_runtime(&self) -> bool
pub(crate) fn needs_allocator(&self) -> bool
pub(crate) fn has_global_allocator(&self) -> bool
pub(crate) fn has_alloc_error_handler(&self) -> bool
pub(crate) fn has_default_lib_allocator(&self) -> bool
pub(crate) fn is_proc_macro_crate(&self) -> bool
pub(crate) fn name(&self) -> Symbol
pub(crate) fn hash(&self) -> Svh
fn num_def_ids(&self) -> usize
fn local_def_id(&self, index: DefIndex) -> DefId
fn reverse_translate_def_id(&self, did: DefId) -> Option<DefId>
Trait Implementations§
Source§impl<'a> Clone for CrateMetadataRef<'a>
impl<'a> Clone for CrateMetadataRef<'a>
Source§fn clone(&self) -> CrateMetadataRef<'a>
fn clone(&self) -> CrateMetadataRef<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Deref for CrateMetadataRef<'_>
impl Deref for CrateMetadataRef<'_>
Source§impl<'a, 'tcx> Metadata<'a, 'tcx> for CrateMetadataRef<'a>
impl<'a, 'tcx> Metadata<'a, 'tcx> for CrateMetadataRef<'a>
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§
§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
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,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
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