flowistry_pdg::rustc::mir

Enum ConstraintCategory

Source
pub enum ConstraintCategory<'tcx> {
Show 19 variants Return(ReturnConstraint), Yield, UseAsConst, UseAsStatic, TypeAnnotation, Cast { is_implicit_coercion: bool, unsize_to: Option<Ty<'tcx>>, }, ClosureBounds, CallArgument(Option<Ty<'tcx>>), CopyBound, SizedBound, Assignment, Usage, OpaqueType, ClosureUpvar(FieldIdx), Predicate(Span), Boring, BoringNoLocation, Internal, IllegalUniverse,
}
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

Fields

§is_implicit_coercion: bool

Whether this cast is a coercion that was automatically inserted by the compiler.

§unsize_to: Option<Ty<'tcx>>

Whether this is an unsizing coercion and if yes, this contains the target type. Region variables are erased to ReErased.

§

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.

§

IllegalUniverse

An internal constraint derived from an illegal universe relation.

Auto Trait Implementations§

§

impl<'tcx> Freeze for ConstraintCategory<'tcx>

§

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 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> ToOwned for T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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>,

Source§

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.