rustc_query_system::dep_graph

Trait DepContext

source
pub trait DepContext: Copy {
    type Deps: Deps;

    // Required methods
    fn with_stable_hashing_context<R>(
        self,
        f: impl FnOnce(StableHashingContext<'_>) -> R,
    ) -> R;
    fn dep_graph(&self) -> &DepGraph<Self::Deps>;
    fn profiler(&self) -> &SelfProfilerRef;
    fn sess(&self) -> &Session;
    fn dep_kind_info(&self, dep_node: DepKind) -> &DepKindStruct<Self>;

    // Provided methods
    fn fingerprint_style(self, kind: DepKind) -> FingerprintStyle { ... }
    fn is_eval_always(self, kind: DepKind) -> bool { ... }
    fn try_force_from_dep_node(
        self,
        dep_node: DepNode,
        frame: Option<&MarkFrame<'_>>,
    ) -> bool { ... }
    fn try_load_from_on_disk_cache(self, dep_node: DepNode) { ... }
}

Required Associated Types§

Required Methods§

source

fn with_stable_hashing_context<R>( self, f: impl FnOnce(StableHashingContext<'_>) -> R, ) -> R

Create a hashing context for hashing new results.

source

fn dep_graph(&self) -> &DepGraph<Self::Deps>

Access the DepGraph.

source

fn profiler(&self) -> &SelfProfilerRef

Access the profiler.

source

fn sess(&self) -> &Session

Access the compiler session.

source

fn dep_kind_info(&self, dep_node: DepKind) -> &DepKindStruct<Self>

Provided Methods§

source

fn fingerprint_style(self, kind: DepKind) -> FingerprintStyle

source

fn is_eval_always(self, kind: DepKind) -> bool

Return whether this kind always require evaluation.

source

fn try_force_from_dep_node( self, dep_node: DepNode, frame: Option<&MarkFrame<'_>>, ) -> bool

Try to force a dep node to execute and see if it’s green.

Returns true if the query has actually been forced. It is valid that a query fails to be forced, e.g. when the query key cannot be reconstructed from the dep-node or when the query kind outright does not support it.

source

fn try_load_from_on_disk_cache(self, dep_node: DepNode)

Load data from the on-disk cache.

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§