Struct arithmetic_typing::arith::Substitutions
source · pub struct Substitutions<Prim: PrimitiveType> { /* private fields */ }
Expand description
Set of equations and constraints on type variables.
Implementations§
source§impl<Prim: PrimitiveType> Substitutions<Prim>
impl<Prim: PrimitiveType> Substitutions<Prim>
sourcepub fn insert_constraint<C>(
&mut self,
var_idx: usize,
constraint: &C,
errors: OpErrors<'_, Prim>,
)where
C: Constraint<Prim> + Clone,
pub fn insert_constraint<C>(
&mut self,
var_idx: usize,
constraint: &C,
errors: OpErrors<'_, Prim>,
)where
C: Constraint<Prim> + Clone,
Inserts constraints
for a type var with the specified index and all vars
it is equivalent to.
sourcepub fn apply_static_len(&mut self, len: TupleLen) -> Result<(), ErrorKind<Prim>>
pub fn apply_static_len(&mut self, len: TupleLen) -> Result<(), ErrorKind<Prim>>
Marks len
as static, i.e., not containing UnknownLen::Dynamic
components.
sourcepub fn fast_resolve<'a>(&'a self, ty: &'a Type<Prim>) -> &'a Type<Prim>
pub fn fast_resolve<'a>(&'a self, ty: &'a Type<Prim>) -> &'a Type<Prim>
Resolves the type by following established equality links between type variables.
sourcepub fn resolver(&self) -> impl VisitMut<Prim> + '_
pub fn resolver(&self) -> impl VisitMut<Prim> + '_
Returns a visitor that resolves the type using equality relations in these Substitutions
.
sourcepub fn new_type_var(&mut self) -> Type<Prim>
pub fn new_type_var(&mut self) -> Type<Prim>
Creates and returns a new type variable.
sourcepub fn unify(
&mut self,
lhs: &Type<Prim>,
rhs: &Type<Prim>,
errors: OpErrors<'_, Prim>,
)
pub fn unify( &mut self, lhs: &Type<Prim>, rhs: &Type<Prim>, errors: OpErrors<'_, Prim>, )
Unifies types in lhs
and rhs
.
- LHS corresponds to the lvalue in assignments and to called function signature in fn calls.
- RHS corresponds to the rvalue in assignments and to the type of the called function.
If unification is impossible, the corresponding error(s) will be put into errors
.
Trait Implementations§
source§impl<Prim: Clone + PrimitiveType> Clone for Substitutions<Prim>
impl<Prim: Clone + PrimitiveType> Clone for Substitutions<Prim>
source§fn clone(&self) -> Substitutions<Prim>
fn clone(&self) -> Substitutions<Prim>
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<Prim: Debug + PrimitiveType> Debug for Substitutions<Prim>
impl<Prim: Debug + PrimitiveType> Debug for Substitutions<Prim>
source§impl<Prim: PrimitiveType> Default for Substitutions<Prim>
impl<Prim: PrimitiveType> Default for Substitutions<Prim>
Auto Trait Implementations§
impl<Prim> Freeze for Substitutions<Prim>
impl<Prim> !RefUnwindSafe for Substitutions<Prim>
impl<Prim> Send for Substitutions<Prim>
impl<Prim> Sync for Substitutions<Prim>
impl<Prim> Unpin for Substitutions<Prim>where
Prim: Unpin,
impl<Prim> !UnwindSafe for Substitutions<Prim>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)