pub enum ConstraintCategory<'tcx> {
Show 18 variants Return(ReturnConstraint), Yield, UseAsConst, UseAsStatic, TypeAnnotation, Cast, ClosureBounds, CallArgument(Option<Ty<'tcx>>), CopyBound, SizedBound, Assignment, Usage, OpaqueType, ClosureUpvar(FieldIdx), Predicate(Span), Boring, BoringNoLocation, Internal,
}
Expand description

Outlives-constraints can be categorized to determine whether and why they are interesting (for error reporting). Order of variants indicates sort order of the category, thereby influencing diagnostic output.

See also rustc_const_eval::borrow_check::constraints.

Variants§

§

Return(ReturnConstraint)

§

Yield

§

UseAsConst

§

UseAsStatic

§

TypeAnnotation

§

Cast

§

ClosureBounds

A constraint that came from checking the body of a closure.

We try to get the category that the closure used when reporting this.

§

CallArgument(Option<Ty<'tcx>>)

Contains the function type if available.

§

CopyBound

§

SizedBound

§

Assignment

§

Usage

A constraint that came from a usage of a variable (e.g. in an ADT expression like Foo { field: my_val })

§

OpaqueType

§

ClosureUpvar(FieldIdx)

§

Predicate(Span)

A constraint from a user-written predicate with the provided span, written on the item with the given DefId

§

Boring

A “boring” constraint (caused by the given location) is one that the user probably doesn’t want to see described in diagnostics, because it is kind of an artifact of the type system setup.

§

BoringNoLocation

§

Internal

A constraint that doesn’t correspond to anything the user sees.

Auto Trait Implementations§

§

impl<'tcx> !RefUnwindSafe for ConstraintCategory<'tcx>

§

impl<'tcx> !Send for ConstraintCategory<'tcx>

§

impl<'tcx> !Sync for ConstraintCategory<'tcx>

§

impl<'tcx> Unpin for ConstraintCategory<'tcx>

§

impl<'tcx> !UnwindSafe for ConstraintCategory<'tcx>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<T> CallHasher for Twhere T: Hash + ?Sized,

§

default fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where H: Hash + ?Sized, B: BuildHasher,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.