pub(crate) struct ReadsRecorder {
reads: Vec<DepNodeIndex>,
seen: FxHashSet<DepNodeIndex>,
}Expand description
Records the reads of a task with many reads.
Recorders are pooled globally, reusing the read list and hash set allocations across tasks.
Fields§
§reads: Vec<DepNodeIndex>The deduplicated reads, in first-read order.
seen: FxHashSet<DepNodeIndex>Implementations§
Source§impl ReadsRecorder
impl ReadsRecorder
Sourcefn seed(&mut self, reads: &[DepNodeIndex])
fn seed(&mut self, reads: &[DepNodeIndex])
Seeds a fresh recorder with reads that are already known to be distinct.
Sourcefn insert(&mut self, index: DepNodeIndex) -> bool
fn insert(&mut self, index: DepNodeIndex) -> bool
Records a read of index and returns whether it was new for the current task.
Sourcepub(crate) fn release(self, pool: &Lock<Vec<ReadsRecorder>>)
pub(crate) fn release(self, pool: &Lock<Vec<ReadsRecorder>>)
Returns a finished task’s recorder to the pool. The cap keeps deeply nested tasks from growing the pool without bound.
Trait Implementations§
Source§impl Debug for ReadsRecorder
impl Debug for ReadsRecorder
Source§impl Default for ReadsRecorder
impl Default for ReadsRecorder
Source§fn default() -> ReadsRecorder
fn default() -> ReadsRecorder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl DynSend for ReadsRecorder
impl DynSync for ReadsRecorder
impl Freeze for ReadsRecorder
impl RefUnwindSafe for ReadsRecorder
impl Send for ReadsRecorder
impl Sync for ReadsRecorder
impl Unpin for ReadsRecorder
impl UnsafeUnpin for ReadsRecorder
impl UnwindSafe for ReadsRecorder
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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
Argument conversion from
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: 56 bytes