Enum paralegal_spdg::rustc::mir::terminator::ConstraintCategory
source · 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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.