rustc_middle::dep_graph::dep_node

Trait DepContext

pub(crate) 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§

type Deps: Deps

Required Methods§

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

Create a hashing context for hashing new results.

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

Access the DepGraph.

fn profiler(&self) -> &SelfProfilerRef

Access the profiler.

fn sess(&self) -> &Session

Access the compiler 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

Return whether this kind always require evaluation.

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.

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§

Source§

impl<'tcx> DepContext for TyCtxt<'tcx>