pub enum Error<'r> {
MissingValue(Value<'r>),
MissingRecordField(Name<'r>),
MissingVariantCase(Name<'r>),
MismatchedValue(Value<'r>, Value<'r>),
MismatchedDefined(Box<Defined<'r>>, Box<Defined<'r>>),
MismatchedResources(ResourceId, ResourceId),
MismatchedVars(Tyvar, Tyvar),
MismatchedResourceVar(Tyvar, ResourceId),
NotResource(Handleable),
}
Expand description
The various ways in which a value can fail to be a subtype of another
Variants§
MissingValue(Value<'r>)
An unnamed value that was expected was missing (e.g. in a tuple or variant case)
MissingRecordField(Name<'r>)
A record field that was expected was missing
MissingVariantCase(Name<'r>)
A variant case that was expected was missing
MismatchedValue(Value<'r>, Value<'r>)
A value type was present, but incompatible with its expected type
MismatchedDefined(Box<Defined<'r>>, Box<Defined<'r>>)
A defined type was present, but incompatible with its expected type
MismatchedResources(ResourceId, ResourceId)
A resource was present, but was not the same resource as was expected
MismatchedVars(Tyvar, Tyvar)
A type variable could not be resolved to be the same as the expected one
MismatchedResourceVar(Tyvar, ResourceId)
A resource was expected but a non-resource tyvar was found, or vice versa
NotResource(Handleable)
A handle was taken to something that wasn’t a resource. Strictly speaking, this might be a well-formedness error on one side or the other rather than a subtyping error
Trait Implementations§
Auto Trait Implementations§
impl<'r> Freeze for Error<'r>
impl<'r> RefUnwindSafe for Error<'r>
impl<'r> Send for Error<'r>
impl<'r> Sync for Error<'r>
impl<'r> Unpin for Error<'r>
impl<'r> UnwindSafe for Error<'r>
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<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>
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>
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