## QueryConfig

# Trait QueryConfig

Source

    pub trait QueryConfig<Qcx: QueryContext>: Copy {
        type Key: DepNodeParams<Qcx::DepContext> + Eq + Hash + Copy + Debug;
        type Value: Copy;
        type Cache: QueryCache<Key = Self::Key, Value = Self::Value>;

    Show 18 methods    // Required methods
        fn name(self) -> &'static str;
        fn format_value(self) -> fn(&Self::Value) -> String;
        fn query_state<'a>(
            self,
            tcx: Qcx,
        ) -> &'a QueryState<Self::Key, Qcx::QueryInfo>
           where Qcx: 'a;
        fn query_cache<'a>(self, tcx: Qcx) -> &'a Self::Cache
           where Qcx: 'a;
        fn cache_on_disk(self, tcx: Qcx::DepContext, key: &Self::Key) -> bool;
        fn execute_query(self, tcx: Qcx::DepContext, k: Self::Key) -> Self::Value;
        fn compute(self, tcx: Qcx, key: Self::Key) -> Self::Value;
        fn try_load_from_disk(
            self,
            tcx: Qcx,
            key: &Self::Key,
            prev_index: SerializedDepNodeIndex,
            index: DepNodeIndex,
        ) -> Option<Self::Value>;
        fn loadable_from_disk(
            self,
            qcx: Qcx,
            key: &Self::Key,
            idx: SerializedDepNodeIndex,
        ) -> bool;
        fn value_from_cycle_error(
            self,
            tcx: Qcx::DepContext,
            cycle_error: &CycleError<QueryStackFrameExtra>,
            guar: ErrorGuaranteed,
        ) -> Self::Value;
        fn anon(self) -> bool;
        fn eval_always(self) -> bool;
        fn depth_limit(self) -> bool;
        fn feedable(self) -> bool;
        fn dep_kind(self) -> DepKind;
        fn handle_cycle_error(self) -> HandleCycleError;
        fn hash_result(self) -> HashResult<Self::Value>;

        // Provided method
        fn construct_dep_node(
            self,
            tcx: Qcx::DepContext,
            key: &Self::Key,
        ) -> DepNode { ... }
    }

## Required Associated Types§

Source

#### type Key: DepNodeParams<Qcx::DepContext> + Eq + Hash + Copy + Debug

Source

#### type Value: Copy

Source

#### type Cache: QueryCache<Key = Self::Key, Value = Self::Value>

## Required Methods§

Source

#### fn name(self) -> &'static str

Source

#### fn format_value(self) -> fn(&Self::Value) -> String

Source

#### fn query_state<'a>(self, tcx: Qcx) -> &'a QueryState<Self::Key, Qcx::QueryInfo>
where Qcx: 'a,

Source

#### fn query_cache<'a>(self, tcx: Qcx) -> &'a Self::Cache
where Qcx: 'a,

Source

#### fn cache_on_disk(self, tcx: Qcx::DepContext, key: &Self::Key) -> bool

Source

#### fn execute_query(self, tcx: Qcx::DepContext, k: Self::Key) -> Self::Value

Source

#### fn compute(self, tcx: Qcx, key: Self::Key) -> Self::Value

Source

#### fn try_load_from_disk( self, tcx: Qcx, key: &Self::Key, prev_index: SerializedDepNodeIndex, index: DepNodeIndex, ) -> Option<Self::Value>

Source

#### fn loadable_from_disk( self, qcx: Qcx, key: &Self::Key, idx: SerializedDepNodeIndex, ) -> bool

Source

#### fn value_from_cycle_error( self, tcx: Qcx::DepContext, cycle_error: &CycleError<QueryStackFrameExtra>, guar: ErrorGuaranteed, ) -> Self::Value

Synthesize an error value to let compilation continue after a cycle.

Source

#### fn anon(self) -> bool

Source

#### fn eval_always(self) -> bool

Source

#### fn depth_limit(self) -> bool

Source

#### fn feedable(self) -> bool

Source

#### fn dep_kind(self) -> DepKind

Source

#### fn handle_cycle_error(self) -> HandleCycleError

Source

#### fn hash_result(self) -> HashResult<Self::Value>

## Provided Methods§

Source

#### fn construct_dep_node(self, tcx: Qcx::DepContext, key: &Self::Key) -> DepNode

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

## Implementors§