pub(crate) struct LocalDefsRemapping {
pub first_non_det_index: u32,
pub remapping: Vec<DefIndex>,
pub sorted_non_det_ids: Rc<[LocalDefId]>,
}Fields§
§first_non_det_index: u32See Definitions::first_non_det_index, it is just cached version of it.
remapping: Vec<DefIndex>The map where for each non-det local def id the remapped def index
is stored. It can be accessed by
remapping[id.local_def_index - first_non_det_index], the caller should
ensure that id.local_def_index >= first_non_det_index.
sorted_non_det_ids: Rc<[LocalDefId]>The ordered list of NON-remapped non-det local def ids. This list is used when we need to iterate over all local defs in a stable order.
Implementations§
Source§impl LocalDefsRemapping
impl LocalDefsRemapping
Sourcefn map_local_def_id(&self, local_def_id: LocalDefId) -> RemappedLocalDefId
fn map_local_def_id(&self, local_def_id: LocalDefId) -> RemappedLocalDefId
This method should be used whenever the LocalDefId is encoded, as it remaps
it’s local_def_index for deterministic metadata encoding, this
remapping needs to be applied to all LocalDefIds during metadata encoding.
Note that when implementing custom structs that represent LocalDefId the
remapping should also be applied (see RawDefId).
Sourcefn map_def_id(&self, def_id: DefId) -> DefId
fn map_def_id(&self, def_id: DefId) -> DefId
Remaps DefId only if it local for deterministic metadata encoding. External
def ids are not needed to be remapped as they are already deterministic.
Whenever a DefId is encoded this method should be called.
Note that when implementing custom structs that represent DefId the
remapping should also be applied (see RawDefId).
Sourcefn map_index(&self, def_index: DefIndex) -> DefIndex
fn map_index(&self, def_index: DefIndex) -> DefIndex
Shared part of map_local_def_id and map_def_id which remaps a def index.
Given only def index we do not know whether it belongs to local or external
def id, so this method should not be called on DefIndexes whose origin is unknown.
Prefer to use above-mentioned methods instead or use it when it is clear that
DefIndex is local.
fn iter_sorted_local_ids(&self) -> impl Iterator<Item = LocalDefId> + use<>
fn new(tcx: TyCtxt<'_>) -> LocalDefsRemapping
Trait Implementations§
Auto Trait Implementations§
impl !DynSend for LocalDefsRemapping
impl !DynSync for LocalDefsRemapping
impl !Send for LocalDefsRemapping
impl !Sync for LocalDefsRemapping
impl Freeze for LocalDefsRemapping
impl RefUnwindSafe for LocalDefsRemapping
impl Unpin for LocalDefsRemapping
impl UnsafeUnpin for LocalDefsRemapping
impl UnwindSafe for LocalDefsRemapping
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> ErasedDestructor for Twhere
T: 'static,
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<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> 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> ⓘ
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: 48 bytes