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: Kid: QueryJobIdImplementations
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.