Enum flowistry_pdg::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.