pub enum Because<'db> {
JustSo,
VarNotDeclaredToBe(SymVariable<'db>, Predicate),
NeverIsNotCopy,
NoWhereClause(SymVariable<'db>, Predicate),
StructsAreNotLent(SymTyName<'db>),
PermIsNot(SymPerm<'db>, Predicate),
LeasedFromCopyIsCopy(Vec<SymPlace<'db>>),
UniversalMismatch(SymVariable<'db>, SymVariable<'db>),
NameMismatch(SymTyName<'db>, SymTyName<'db>),
InferredPermBound(Direction, RedPerm<'db>, ArcOrElse<'db>),
InferredLowerBound(RedTy<'db>, ArcOrElse<'db>),
UnconstrainedInfer(InferVarIndex),
}Expand description
Reason that a low-level typing operation failed.
Variants§
JustSo
Miscellaneous
VarNotDeclaredToBe(SymVariable<'db>, Predicate)
Universal variable was not declared to be predicate (and it must be)
NeverIsNotCopy
The never type is not copy
NoWhereClause(SymVariable<'db>, Predicate)
A where clause would be needed on the given variable
StructsAreNotLent(SymTyName<'db>)
Struct types are never lent, even if they have lent things in them, as they can still have non-lent things.
PermIsNot(SymPerm<'db>, Predicate)
$perm is not $predicate
LeasedFromCopyIsCopy(Vec<SymPlace<'db>>)
Leasing from a copy place yields a copy permission (which is not desired here)
UniversalMismatch(SymVariable<'db>, SymVariable<'db>)
Universal mismatch
NameMismatch(SymTyName<'db>, SymTyName<'db>)
Name mismatch
InferredPermBound(Direction, RedPerm<'db>, ArcOrElse<'db>)
Indicates that there was a previous constraint from elsewhere in the program that caused a conflict with the current value
InferredLowerBound(RedTy<'db>, ArcOrElse<'db>)
Inference determined that the variable must have this lower bound “or else” the given error would occur.
UnconstrainedInfer(InferVarIndex)
The given inference variable needs more constraints
Implementations§
Source§impl<'db> Because<'db>
impl<'db> Because<'db>
pub fn annotate_diagnostic( self, env: &mut Env<'db>, diagnostic: Diagnostic, ) -> Diagnostic
fn to_annotation( &self, env: &mut Env<'db>, span: Span<'db>, ) -> Option<Diagnostic>
Auto Trait Implementations§
impl<'db> Freeze for Because<'db>
impl<'db> !RefUnwindSafe for Because<'db>
impl<'db> !Send for Because<'db>
impl<'db> !Sync for Because<'db>
impl<'db> Unpin for Because<'db>
impl<'db> UnsafeUnpin for Because<'db>
impl<'db> !UnwindSafe for Because<'db>
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more