struct JobOwner<'tcx, K>where
K: Eq + Hash + Clone,{
state: &'tcx QueryState<K>,
key: K,
id: QueryJobId,
}
Expand description
A type representing the responsibility to execute the job in the job
field.
This will poison the relevant query if dropped.
Fields
state: &'tcx QueryState<K>
key: K
id: QueryJobId
Implementations
sourceimpl<'tcx, K> JobOwner<'tcx, K>where
K: Eq + Hash + Clone,
impl<'tcx, K> JobOwner<'tcx, K>where
K: Eq + Hash + Clone,
sourcefn try_start<'b, CTX>(
tcx: &'b CTX,
state: &'b QueryState<K>,
span: Span,
key: K
) -> TryGetJob<'b, K>where
CTX: QueryContext,
fn try_start<'b, CTX>(
tcx: &'b CTX,
state: &'b QueryState<K>,
span: Span,
key: K
) -> TryGetJob<'b, K>where
CTX: QueryContext,
Either gets a JobOwner
corresponding the query, allowing us to
start executing the query, or returns with the result of the query.
This function assumes that try_get_cached
is already called and returned lookup
.
If the query is executing elsewhere, this will wait for it and return the result.
If the query panicked, this will silently panic.
This function is inlined because that results in a noticeable speed-up for some compile-time benchmarks.
sourcefn complete<C>(
self,
cache: &C,
result: C::Value,
dep_node_index: DepNodeIndex
) -> C::Storedwhere
C: QueryCache<Key = K>,
fn complete<C>(
self,
cache: &C,
result: C::Value,
dep_node_index: DepNodeIndex
) -> C::Storedwhere
C: QueryCache<Key = K>,
Completes the query by updating the query cache with the result
,
signals the waiter and forgets the JobOwner, so it won’t poison the query
Trait Implementations
Auto Trait Implementations
impl<'tcx, K> !RefUnwindSafe for JobOwner<'tcx, K>
impl<'tcx, K> !Send for JobOwner<'tcx, K>
impl<'tcx, K> !Sync for JobOwner<'tcx, K>
impl<'tcx, K> Unpin for JobOwner<'tcx, K>where
K: Unpin,
impl<'tcx, K> !UnwindSafe for JobOwner<'tcx, K>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.