pub struct QueryVTable<'tcx, C: QueryCache> {Show 15 fields
pub name: &'static str,
pub eval_always: 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.
Used indirectly by query plumbing in rustc_query_system via a trait,
and also used directly by query plumbing in rustc_query_impl.
Fields§
§name: &'static str§eval_always: bool§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.
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> 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