[−][src]Trait rustc_infer::infer::canonical::substitute::CanonicalExt

pub(in infer::canonical) trait CanonicalExt<'tcx, V> {
    pub(in infer::canonical) fn substitute(
        &self,
        tcx: TyCtxt<'tcx>,
        var_values: &CanonicalVarValues<'tcx>
    ) -> V
    where
        V: TypeFoldable<'tcx>
;
pub(in infer::canonical) fn substitute_projected<T>(
        &self,
        tcx: TyCtxt<'tcx>,
        var_values: &CanonicalVarValues<'tcx>,
        projection_fn: impl FnOnce(&V) -> T
    ) -> T
    where
        T: TypeFoldable<'tcx>
; }

Required methods

pub(in infer::canonical) fn substitute(
    &self,
    tcx: TyCtxt<'tcx>,
    var_values: &CanonicalVarValues<'tcx>
) -> V where
    V: TypeFoldable<'tcx>, 
[src]

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

pub(in infer::canonical) fn substitute_projected<T>(
    &self,
    tcx: TyCtxt<'tcx>,
    var_values: &CanonicalVarValues<'tcx>,
    projection_fn: impl FnOnce(&V) -> T
) -> T where
    T: TypeFoldable<'tcx>, 
[src]

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.

Loading content...

Implementors

impl<'tcx, V> CanonicalExt<'tcx, V> for Canonical<'tcx, V>[src]

Loading content...