Struct rustc_metadata::creader::CStore
source · pub struct CStore {
metadata_loader: Box<MetadataLoaderDyn>,
metas: IndexVec<CrateNum, Option<Box<CrateMetadata>>>,
injected_panic_runtime: Option<CrateNum>,
allocator_kind: Option<AllocatorKind>,
alloc_error_handler_kind: Option<AllocatorKind>,
has_global_allocator: bool,
has_alloc_error_handler: bool,
pub(crate) stable_crate_ids: StableCrateIdMap,
unused_externs: Vec<Symbol>,
}
Fields§
§metadata_loader: Box<MetadataLoaderDyn>
§metas: IndexVec<CrateNum, Option<Box<CrateMetadata>>>
§injected_panic_runtime: Option<CrateNum>
§allocator_kind: Option<AllocatorKind>
This crate needs an allocator and either provides it itself, or finds it in a dependency. If the above is true, then this field denotes the kind of the found allocator.
alloc_error_handler_kind: Option<AllocatorKind>
This crate needs an allocation error handler and either provides it itself, or finds it in a dependency. If the above is true, then this field denotes the kind of the found allocator.
has_global_allocator: bool
This crate has a #[global_allocator]
item.
has_alloc_error_handler: bool
This crate has a #[alloc_error_handler]
item.
stable_crate_ids: StableCrateIdMap
The interned StableCrateIds.
unused_externs: Vec<Symbol>
Unused externs of the crate
Implementations§
source§impl CStore
impl CStore
pub fn ctor_untracked(&self, def: DefId) -> Option<(CtorKind, DefId)>
pub fn load_macro_untracked(&self, id: DefId, tcx: TyCtxt<'_>) -> LoadedMacro
pub fn def_span_untracked(&self, def_id: DefId, sess: &Session) -> Span
pub fn def_kind_untracked(&self, def: DefId) -> DefKind
pub fn expn_that_defined_untracked( &self, def_id: DefId, sess: &Session ) -> ExpnId
sourcepub fn num_def_ids_untracked(&self, cnum: CrateNum) -> usize
pub fn num_def_ids_untracked(&self, cnum: CrateNum) -> usize
Only public-facing way to traverse all the definitions in a non-local crate. Critically useful for this third-party project: https://github.com/hacspec/hacspec. See https://github.com/rust-lang/rust/pull/85889 for context.
pub fn get_proc_macro_quoted_span_untracked( &self, cnum: CrateNum, id: usize, sess: &Session ) -> Span
pub fn set_used_recursively(&mut self, cnum: CrateNum)
pub(crate) fn update_extern_crate( &mut self, cnum: CrateNum, extern_crate: ExternCrate )
source§impl CStore
impl CStore
pub fn from_tcx(tcx: TyCtxt<'_>) -> FreezeReadGuard<'_, CStore>
pub fn from_tcx_mut(tcx: TyCtxt<'_>) -> FreezeWriteGuard<'_, CStore>
fn intern_stable_crate_id( &mut self, root: &CrateRoot ) -> Result<CrateNum, CrateError>
pub fn has_crate_data(&self, cnum: CrateNum) -> bool
pub(crate) fn get_crate_data(&self, cnum: CrateNum) -> CrateMetadataRef<'_>
pub(crate) fn get_crate_data_mut( &mut self, cnum: CrateNum ) -> &mut CrateMetadata
fn set_crate_data(&mut self, cnum: CrateNum, data: CrateMetadata)
pub(crate) fn iter_crate_data( &self ) -> impl Iterator<Item = (CrateNum, &CrateMetadata)>
fn iter_crate_data_mut( &mut self ) -> impl Iterator<Item = (CrateNum, &mut CrateMetadata)>
fn push_dependencies_in_postorder( &self, deps: &mut Vec<CrateNum>, cnum: CrateNum )
pub(crate) fn crate_dependencies_in_postorder( &self, cnum: CrateNum ) -> Vec<CrateNum>
fn crate_dependencies_in_reverse_postorder( &self, cnum: CrateNum ) -> Vec<CrateNum>
pub(crate) fn injected_panic_runtime(&self) -> Option<CrateNum>
pub(crate) fn allocator_kind(&self) -> Option<AllocatorKind>
pub(crate) fn alloc_error_handler_kind(&self) -> Option<AllocatorKind>
pub(crate) fn has_global_allocator(&self) -> bool
pub(crate) fn has_alloc_error_handler(&self) -> bool
pub fn report_unused_deps(&self, tcx: TyCtxt<'_>)
pub fn new( metadata_loader: Box<MetadataLoaderDyn>, local_stable_crate_id: StableCrateId ) -> CStore
Trait Implementations§
source§impl CrateStore for CStore
impl CrateStore for CStore
source§fn def_key(&self, def: DefId) -> DefKey
fn def_key(&self, def: DefId) -> DefKey
Returns the DefKey
for a given DefId
. This indicates the
parent DefId
as well as some idea of what kind of data the
DefId
refers to.
fn as_any(&self) -> &dyn Any
fn untracked_as_any(&mut self) -> &mut dyn Any
fn crate_name(&self, cnum: CrateNum) -> Symbol
fn stable_crate_id(&self, cnum: CrateNum) -> StableCrateId
fn stable_crate_id_to_crate_num( &self, stable_crate_id: StableCrateId ) -> CrateNum
fn def_path(&self, def: DefId) -> DefPath
fn def_path_hash(&self, def: DefId) -> DefPathHash
source§fn def_path_hash_to_def_id(&self, cnum: CrateNum, hash: DefPathHash) -> DefId
fn def_path_hash_to_def_id(&self, cnum: CrateNum, hash: DefPathHash) -> DefId
fn expn_hash_to_expn_id( &self, sess: &Session, cnum: CrateNum, index_guess: u32, hash: ExpnHash ) -> ExpnId
source§fn import_source_files(&self, sess: &Session, cnum: CrateNum)
fn import_source_files(&self, sess: &Session, cnum: CrateNum)
SourceFile
s from the given crate into the current session.
This normally happens automatically when we decode a Span
from
that crate’s metadata - however, the incr comp cache needs
to trigger this manually when decoding a foreign Span
Auto Trait Implementations§
impl DynSend for CStore
impl DynSync for CStore
impl Freeze for CStore
impl !RefUnwindSafe for CStore
impl !Send for CStore
impl !Sync for CStore
impl Unpin for CStore
impl !UnwindSafe for CStore
Blanket Implementations§
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, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
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<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
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§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: 128 bytes