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 query_state: usize,
pub query_cache: usize,
pub will_cache_on_disk_for_key_fn: Option<WillCacheOnDiskForKeyFn<'tcx, C::Key>>,
pub call_query_method_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key),
pub invoke_provider_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key) -> C::Value,
pub try_load_from_disk_fn: Option<TryLoadFromDiskFn<'tcx, C::Key, C::Value>>,
pub is_loadable_from_disk_fn: Option<IsLoadableFromDiskFn<'tcx, C::Key>>,
pub hash_result: HashResult<C::Value>,
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,
}Expand description
Stores function pointers and other metadata 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.
query_state: usize§query_cache: usize§will_cache_on_disk_for_key_fn: Option<WillCacheOnDiskForKeyFn<'tcx, C::Key>>§call_query_method_fn: fn(tcx: TyCtxt<'tcx>, key: C::Key)Function pointer that calls tcx.$query(key) for this query and
discards the returned value.
This is a weird thing to be doing, and probably not what you want. It is used for loading query results from disk-cache in some cases.
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.
try_load_from_disk_fn: Option<TryLoadFromDiskFn<'tcx, C::Key, C::Value>>§is_loadable_from_disk_fn: Option<IsLoadableFromDiskFn<'tcx, C::Key>>§hash_result: HashResult<C::Value>§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.
Implementations§
Source§impl<'tcx, C: QueryCache> QueryVTable<'tcx, C>
impl<'tcx, C: QueryCache> QueryVTable<'tcx, C>
pub fn will_cache_on_disk_for_key( &self, tcx: TyCtxt<'tcx>, key: &C::Key, ) -> bool
pub fn query_state(&self, tcx: TyCtxt<'tcx>) -> &'tcx QueryState<'tcx, C::Key>
pub fn query_cache(&self, tcx: TyCtxt<'tcx>) -> &'tcx C
pub fn try_load_from_disk( &self, tcx: TyCtxt<'tcx>, key: &C::Key, prev_index: SerializedDepNodeIndex, index: DepNodeIndex, ) -> Option<C::Value>
pub fn is_loadable_from_disk( &self, tcx: TyCtxt<'tcx>, key: &C::Key, index: SerializedDepNodeIndex, ) -> bool
Sourcepub fn value_from_cycle_error(
&self,
tcx: TyCtxt<'tcx>,
cycle_error: &CycleError,
guar: ErrorGuaranteed,
) -> C::Value
pub fn value_from_cycle_error( &self, tcx: TyCtxt<'tcx>, cycle_error: &CycleError, guar: ErrorGuaranteed, ) -> C::Value
Synthesize an error value to let compilation continue after a cycle.
pub fn construct_dep_node(&self, tcx: TyCtxt<'tcx>, key: &C::Key) -> DepNode
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>
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: 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: 112 bytes