pub type CanonicalState<'tcx, T> = Canonical<'tcx, State<'tcx, T>>;

Aliased Type§

struct CanonicalState<'tcx, T> {
    pub value: State<'tcx, T>,
    pub max_universe: UniverseIndex,
    pub variables: &'tcx List<CanonicalVarInfo<'tcx>>,
}

Fields§

§value: State<'tcx, T>§max_universe: UniverseIndex§variables: &'tcx List<CanonicalVarInfo<'tcx>>

Trait Implementations§

source§

impl<'tcx, V> CanonicalExt<'tcx, V> for Canonical<'tcx, V>

source§

fn substitute( &self, tcx: TyCtxt<'tcx>, var_values: &CanonicalVarValues<'tcx> ) -> Vwhere V: TypeFoldable<TyCtxt<'tcx>>,

Instantiate the wrapped value, replacing each canonical value with the value given in var_values.
source§

fn substitute_projected<T>( &self, tcx: TyCtxt<'tcx>, var_values: &CanonicalVarValues<'tcx>, projection_fn: impl FnOnce(&V) -> T ) -> Twhere T: TypeFoldable<TyCtxt<'tcx>>,

Allows one to apply a substitute to some subset of self.value. Invoke projection_fn with self.value to get a value V that is expressed in terms of the same canonical variables bound in self (usually this extracts from subset of self). Apply the substitution var_values to this value V, replacing each of the canonical variables.

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.