pub struct QueryVTable<'tcx, C: QueryCache> {Show 18 fields
pub name: &'static str,
pub anon: bool,
pub eval_always: bool,
pub depth_limit: bool,
pub feedable: bool,
pub dep_kind: DepKind,
pub cycle_error_handling: CycleErrorHandling,
pub state: QueryState<'tcx, C::Key>,
pub cache: C,
pub invoke_provider_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key) -> C::Value,
pub will_cache_on_disk_for_key_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key) -> bool,
pub try_load_from_disk_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key, prev_index: SerializedDepNodeIndex, index: DepNodeIndex) -> Option<C::Value>,
pub is_loadable_from_disk_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key, index: SerializedDepNodeIndex) -> bool,
pub hash_value_fn: Option<fn(&mut StableHashingContext<'_>, &C::Value) -> Fingerprint>,
pub value_from_cycle_error: fn(tcx: TyCtxt<'tcx>, cycle_error: CycleError, guar: ErrorGuaranteed) -> C::Value,
pub format_value: fn(&C::Value) -> String,
pub description_fn: fn(TyCtxt<'tcx>, C::Key) -> String,
pub execute_query_fn: fn(TyCtxt<'tcx>, Span, C::Key, QueryMode) -> Option<C::Value>,
}Expand description
Stores data and metadata (e.g. function pointers) for a particular query.
Fields§
§name: &'static str§anon: boolTrue if this query has the anon modifier.
eval_always: boolTrue if this query has the eval_always modifier.
depth_limit: boolTrue if this query has the depth_limit modifier.
feedable: boolTrue if this query has the feedable modifier.
dep_kind: DepKind§cycle_error_handling: CycleErrorHandlingHow this query deals with query cycle errors.
state: QueryState<'tcx, C::Key>§cache: C§invoke_provider_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key) -> C::ValueFunction pointer that actually calls this query’s provider.
Also performs some associated secondary tasks; see the macro-defined
implementation in mod invoke_provider_fn for more details.
This should be the only code that calls the provider function.
will_cache_on_disk_for_key_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key) -> bool§try_load_from_disk_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key, prev_index: SerializedDepNodeIndex, index: DepNodeIndex) -> Option<C::Value>§is_loadable_from_disk_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key, index: SerializedDepNodeIndex) -> bool§hash_value_fn: Option<fn(&mut StableHashingContext<'_>, &C::Value) -> Fingerprint>Function pointer that hashes this query’s result values.
For no_hash queries, this function pointer is None.
value_from_cycle_error: fn(tcx: TyCtxt<'tcx>, cycle_error: CycleError, guar: ErrorGuaranteed) -> C::Value§format_value: fn(&C::Value) -> String§description_fn: fn(TyCtxt<'tcx>, C::Key) -> StringFormats a human-readable description of this query and its key, as
specified by the desc query modifier.
Used when reporting query cycle errors and similar problems.
execute_query_fn: fn(TyCtxt<'tcx>, Span, C::Key, QueryMode) -> Option<C::Value>Function pointer that is called by the query methods on TyCtxt and
friends1, after they have checked the in-memory cache and found no
existing value for this key.
Transitive responsibilities include trying to load a disk-cached value if possible (incremental only), invoking the query provider if necessary, and putting the obtained value into the in-memory cache.
Trait Implementations§
Auto Trait Implementations§
impl<'tcx, C> DynSend for QueryVTable<'tcx, C>
impl<'tcx, C> DynSync for QueryVTable<'tcx, C>
impl<'tcx, C> !Freeze for QueryVTable<'tcx, C>
impl<'tcx, C> !RefUnwindSafe for QueryVTable<'tcx, C>
impl<'tcx, C> !Send for QueryVTable<'tcx, C>
impl<'tcx, C> !Sync for QueryVTable<'tcx, C>
impl<'tcx, C> Unpin for QueryVTable<'tcx, C>
impl<'tcx, C> UnsafeUnpin for QueryVTable<'tcx, C>where
C: UnsafeUnpin,
impl<'tcx, C> !UnwindSafe for QueryVTable<'tcx, C>
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
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<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
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>
impl<T> ErasedDestructor for Twhere
T: 'static,
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.