Enum erg_compiler::ty::free::Constraint
source · pub enum Constraint {
Sandwiched {
sub: Type,
sup: Type,
},
TypeOf(Type),
Uninited,
}
Expand description
Represents constraints on type variables and type parameters.
Note that constraints can have circular references. However, type variable (FreeTyVar
) is defined with various operations avoiding infinite recursion.
NOTE: you should use Free::get_type/get_subsup
instead of deconstructing the constraint by match
.
Constraints may contain cycles, in which case using match
to get the contents will cause memory destructions.
Variants§
Implementations§
source§impl Constraint
impl Constraint
sourcepub const fn new_sandwiched(sub: Type, sup: Type) -> Self
pub const fn new_sandwiched(sub: Type, sup: Type) -> Self
:> Sub, <: Sup
pub fn named_fmt( &self, f: &mut Formatter<'_>, name: &str, limit: usize ) -> Result
pub fn new_type_of(t: Type) -> Self
pub const fn new_subtype_of(sup: Type) -> Self
pub const fn new_supertype_of(sub: Type) -> Self
pub const fn is_uninited(&self) -> bool
pub fn lift(&self)
pub fn get_type(&self) -> Option<&Type>
pub fn get_sub_sup(&self) -> Option<(&Type, &Type)>
pub fn get_super_mut(&mut self) -> Option<&mut Type>
Trait Implementations§
source§impl Clone for Constraint
impl Clone for Constraint
source§fn clone(&self) -> Constraint
fn clone(&self) -> Constraint
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for Constraint
impl Debug for Constraint
source§impl Display for Constraint
impl Display for Constraint
source§impl Hash for Constraint
impl Hash for Constraint
source§impl LimitedDisplay for Constraint
impl LimitedDisplay for Constraint
source§impl PartialEq<Constraint> for Constraint
impl PartialEq<Constraint> for Constraint
source§fn eq(&self, other: &Constraint) -> bool
fn eq(&self, other: &Constraint) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Eq for Constraint
impl StructuralEq for Constraint
impl StructuralPartialEq for Constraint
Auto Trait Implementations§
impl !RefUnwindSafe for Constraint
impl !Send for Constraint
impl !Sync for Constraint
impl Unpin for Constraint
impl !UnwindSafe for Constraint
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