Struct rustc_query_system::query::plumbing::JobOwner
source · 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: QueryJobIdImplementations§
source§impl<'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, Qcx>(
qcx: &'b Qcx,
state: &'b QueryState<K>,
span: Span,
key: K
) -> TryGetJob<'b, K>where
Qcx: QueryContext,
fn try_start<'b, Qcx>(
qcx: &'b Qcx,
state: &'b QueryState<K>,
span: Span,
key: K
) -> TryGetJob<'b, K>where
Qcx: 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§
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.