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: MetadataBlob
Expand 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: AllocDecodingState
Expand 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: CrateNum
Expand 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: CrateSource
Expand description

Filesystem location of this crate.

private_dep: bool
Expand 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: HygieneDecodeContext
Expand 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]

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]

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]

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> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

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