Struct rustc_metadata::rmeta::decoder::CrateMetadata [−][src]
pub(crate) struct CrateMetadata {Show fields
blob: MetadataBlob,
root: CrateRoot<'static>,
trait_impls: FxHashMap<(u32, DefIndex), Lazy<[(DefIndex, Option<SimplifiedType>)]>>,
raw_proc_macros: Option<&'static [ProcMacro]>,
source_map_import_info: OnceCell<Vec<ImportedSourceFile>>,
def_path_hash_map: OnceCell<UnhashMap<DefPathHash, DefIndex>>,
alloc_decoding_state: AllocDecodingState,
def_key_cache: Lock<FxHashMap<DefIndex, DefKey>>,
def_path_hash_cache: Lock<FxHashMap<DefIndex, DefPathHash>>,
cnum: CrateNum,
cnum_map: IndexVec<CrateNum, CrateNum>,
dependencies: Lock<Vec<CrateNum>>,
dep_kind: Lock<CrateDepKind>,
source: CrateSource,
private_dep: bool,
host_hash: Option<Svh>,
hygiene_context: HygieneDecodeContext,
extern_crate: Lock<Option<ExternCrate>>,
}Fields
blob: MetadataBlobExpand description
The primary crate data - binary metadata blob.
root: CrateRoot<'static>Expand description
Properties of the whole crate.
NOTE(eddyb) we pass 'static to a 'tcx parameter because this
lifetime is only used behind Lazy, and therefore acts like an
universal (for<'tcx>), that is paired up with whichever TyCtxt
is being used to decode those values.
trait_impls: FxHashMap<(u32, DefIndex), Lazy<[(DefIndex, Option<SimplifiedType>)]>>Expand description
Trait impl data. FIXME: Used only from queries and can use query cache, so pre-decoding can probably be avoided.
raw_proc_macros: Option<&'static [ProcMacro]>Expand description
Proc macro descriptions for this crate, if it’s a proc macro crate.
source_map_import_info: OnceCell<Vec<ImportedSourceFile>>Expand description
Source maps for code from the crate.
def_path_hash_map: OnceCell<UnhashMap<DefPathHash, DefIndex>>Expand description
For every definition in this crate, maps its DefPathHash to its
DefIndex. See raw_def_id_to_def_id for more details about how
this is used.
alloc_decoding_state: AllocDecodingStateExpand description
Used for decoding interpret::AllocIds in a cached & thread-safe manner.
def_key_cache: Lock<FxHashMap<DefIndex, DefKey>>Expand description
Caches decoded DefKeys.
def_path_hash_cache: Lock<FxHashMap<DefIndex, DefPathHash>>Expand description
Caches decoded DefPathHashes.
cnum: CrateNumExpand description
ID of this crate, from the current compilation session’s point of view.
cnum_map: IndexVec<CrateNum, CrateNum>Expand description
Maps crate IDs as they are were seen from this crate’s compilation sessions into IDs as they are seen from the current compilation session.
dependencies: Lock<Vec<CrateNum>>Expand description
Same ID set as cnum_map plus maybe some injected crates like panic runtime.
dep_kind: Lock<CrateDepKind>Expand description
How to link (or not link) this crate to the currently compiled crate.
source: CrateSourceExpand description
Filesystem location of this crate.
private_dep: boolExpand description
Whether or not this crate should be consider a private dependency for purposes of the ‘exported_private_dependencies’ lint
host_hash: Option<Svh>Expand description
The hash for the host proc macro. Used to support -Z dual-proc-macro.
hygiene_context: HygieneDecodeContextExpand description
Additional data used for decoding HygieneData (e.g. SyntaxContext
and ExpnId).
Note that we store a HygieneDecodeContext for each CrateMetadat. This is
because SyntaxContext ids are not globally unique, so we need
to track which ids we’ve decoded on a per-crate basis.
extern_crate: Lock<Option<ExternCrate>>Expand description
Information about the extern crate item or path that caused this crate to be loaded.
If this is None, then the crate was injected (e.g., by the allocator).
Implementations
impl CrateMetadata[src]
impl CrateMetadata[src]pub(crate) fn new(
sess: &Session,
blob: MetadataBlob,
root: CrateRoot<'static>,
raw_proc_macros: Option<&'static [ProcMacro]>,
cnum: CrateNum,
cnum_map: IndexVec<CrateNum, CrateNum>,
dep_kind: CrateDepKind,
source: CrateSource,
private_dep: bool,
host_hash: Option<Svh>
) -> CrateMetadata[src]
sess: &Session,
blob: MetadataBlob,
root: CrateRoot<'static>,
raw_proc_macros: Option<&'static [ProcMacro]>,
cnum: CrateNum,
cnum_map: IndexVec<CrateNum, CrateNum>,
dep_kind: CrateDepKind,
source: CrateSource,
private_dep: bool,
host_hash: Option<Svh>
) -> CrateMetadata
pub(crate) fn dependencies(&self) -> LockGuard<'_, Vec<CrateNum>>[src]
pub(crate) fn add_dependency(&self, cnum: CrateNum)[src]
pub(crate) fn update_extern_crate(&self, new_extern_crate: ExternCrate) -> bool[src]
pub(crate) fn source(&self) -> &CrateSource[src]
pub(crate) fn dep_kind(&self) -> CrateDepKind[src]
pub(crate) fn update_dep_kind(
&self,
f: impl FnOnce(CrateDepKind) -> CrateDepKind
)[src]
&self,
f: impl FnOnce(CrateDepKind) -> CrateDepKind
)
pub(crate) fn panic_strategy(&self) -> PanicStrategy[src]
pub(crate) fn needs_panic_runtime(&self) -> bool[src]
pub(crate) fn is_panic_runtime(&self) -> bool[src]
pub(crate) fn is_profiler_runtime(&self) -> bool[src]
pub(crate) fn needs_allocator(&self) -> bool[src]
pub(crate) fn has_global_allocator(&self) -> bool[src]
pub(crate) fn has_default_lib_allocator(&self) -> bool[src]
pub(crate) fn is_proc_macro_crate(&self) -> bool[src]
pub(crate) fn name(&self) -> Symbol[src]
pub(crate) fn disambiguator(&self) -> CrateDisambiguator[src]
pub(crate) fn hash(&self) -> Svh[src]
fn local_def_id(&self, index: DefIndex) -> DefId[src]
fn reverse_translate_def_id(&self, did: DefId) -> Option<DefId>[src]
Auto Trait Implementations
impl !RefUnwindSafe for CrateMetadata
impl !Send for CrateMetadata
impl !Sync for CrateMetadata
impl Unpin for CrateMetadata
impl !UnwindSafe for CrateMetadata
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,