Skip to main content

DepNodeKey

Trait DepNodeKey 

Source
pub trait DepNodeKey<Tcx: DepContext>: Debug + Sized {
    // Required methods
    fn fingerprint_style() -> FingerprintStyle;
    fn to_fingerprint(&self, _: Tcx) -> Fingerprint;
    fn to_debug_str(&self, tcx: Tcx) -> String;
    fn recover(tcx: Tcx, dep_node: &DepNode) -> Option<Self>;
}
Expand description

Trait for query keys as seen by dependency-node tracking.

Required Methods§

Source

fn fingerprint_style() -> FingerprintStyle

Source

fn to_fingerprint(&self, _: Tcx) -> Fingerprint

This method turns a query key into an opaque Fingerprint to be used in DepNode.

Source

fn to_debug_str(&self, tcx: Tcx) -> String

Source

fn recover(tcx: Tcx, dep_node: &DepNode) -> Option<Self>

This method tries to recover the query key from the given DepNode, something which is needed when forcing DepNodes during red-green evaluation. The query system will only call this method if fingerprint_style() is not FingerprintStyle::Opaque. It is always valid to return None here, in which case incremental compilation will treat the query as having changed instead of forcing it.

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, T> DepNodeKey<Tcx> for T
where T: for<'a> HashStable<StableHashingContext<'a>> + Debug,