struct MatchAgainstHigherRankedOutlives<'tcx> {
    tcx: TyCtxt<'tcx>,
    pattern_depth: DebruijnIndex,
    map: FxHashMap<BoundRegion, Region<'tcx>>,
}

Fields§

§tcx: TyCtxt<'tcx>§pattern_depth: DebruijnIndex§map: FxHashMap<BoundRegion, Region<'tcx>>

Implementations§

source§

impl<'tcx> MatchAgainstHigherRankedOutlives<'tcx>

source§

impl<'tcx> MatchAgainstHigherRankedOutlives<'tcx>

source

fn no_match<T>(&self) -> RelateResult<'tcx, T>

Creates the “Error” variant that signals “no match”.

source

fn bind( &mut self, br: BoundRegion, value: Region<'tcx> ) -> RelateResult<'tcx, Region<'tcx>>

Binds the pattern variable br to value; returns an Err if the pattern is already bound to a different value.

Trait Implementations§

source§

impl<'tcx> TypeRelation<'tcx> for MatchAgainstHigherRankedOutlives<'tcx>

source§

fn tag(&self) -> &'static str

Returns a static string we can use for printouts.
source§

fn tcx(&self) -> TyCtxt<'tcx>

source§

fn a_is_expected(&self) -> bool

Returns true if the value a is the “expected” type in the relation. Just affects error messages.
source§

fn relate_with_variance<T: Relate<'tcx>>( &mut self, variance: Variance, _: VarianceDiagInfo<'tcx>, a: T, b: T ) -> RelateResult<'tcx, T>

Switch variance for the purpose of relating a and b.
source§

fn regions( &mut self, pattern: Region<'tcx>, value: Region<'tcx> ) -> RelateResult<'tcx, Region<'tcx>>

source§

fn tys( &mut self, pattern: Ty<'tcx>, value: Ty<'tcx> ) -> RelateResult<'tcx, Ty<'tcx>>

source§

fn consts( &mut self, pattern: Const<'tcx>, value: Const<'tcx> ) -> RelateResult<'tcx, Const<'tcx>>

source§

fn binders<T>( &mut self, pattern: Binder<'tcx, T>, value: Binder<'tcx, T> ) -> RelateResult<'tcx, Binder<'tcx, T>>
where T: Relate<'tcx>,

source§

fn with_cause<F, R>(&mut self, _cause: Cause, f: F) -> R
where F: FnOnce(&mut Self) -> R,

source§

fn relate<T>(&mut self, a: T, b: T) -> Result<T, TypeError<'tcx>>
where T: Relate<'tcx>,

Generic relation routine suitable for most anything.
source§

fn relate_item_args( &mut self, item_def_id: DefId, a_arg: &'tcx List<GenericArg<'tcx>>, b_arg: &'tcx List<GenericArg<'tcx>> ) -> Result<&'tcx List<GenericArg<'tcx>>, TypeError<'tcx>>

Relate the two args for the given item. The default is to look up the variance for the item and proceed accordingly.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 48 bytes