struct LazyNodeIndex {
nodes_by_kind: Vec<Option<SerializedDepNodeIndex>>,
kinds: Vec<LazyKindIndex>,
}Expand description
The inverse of SerializedDepGraph::nodes, built lazily per DepKind.
Only few nodes are ever looked up here, and those cluster into a handful of
DepKinds. Building a map for every kind up front would be wasted work.
Fields§
§nodes_by_kind: Vec<Option<SerializedDepNodeIndex>>All (non-Null) node indices, grouped into contiguous per-DepKind
ranges described by kinds. For any non-Null DepKind k, all values in
nodes_by_kind[kinds[k].start..][..kinds[k].len]
must be Some and have kind k.
kinds: Vec<LazyKindIndex>For each DepKind, the range of nodes_by_kind holding its node indices
and the lazily-built fingerprint map over that range.
Trait Implementations§
Source§impl Debug for LazyNodeIndex
impl Debug for LazyNodeIndex
Source§impl Default for LazyNodeIndex
impl Default for LazyNodeIndex
Source§fn default() -> LazyNodeIndex
fn default() -> LazyNodeIndex
Auto Trait Implementations§
impl DynSend for LazyNodeIndex
impl DynSync for LazyNodeIndex
impl Freeze for LazyNodeIndex
impl RefUnwindSafe for LazyNodeIndex
impl Send for LazyNodeIndex
impl Sync for LazyNodeIndex
impl Unpin for LazyNodeIndex
impl UnsafeUnpin for LazyNodeIndex
impl UnwindSafe for LazyNodeIndex
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