Struct ena::unify::UnificationTable [] [src]

pub struct UnificationTable<K: UnifyKey> { /* fields omitted */ }

Table of unification keys and their values.

Methods

impl<K: UnifyKey> UnificationTable<K>
[src]

Starts a new snapshot. Each snapshot must be either rolled back or committed in a "LIFO" (stack) order.

Reverses all changes since the last snapshot. Also removes any keys that have been created since then.

Commits all changes since the last snapshot. Of course, they can still be undone if there is a snapshot further out.

impl<'tcx, K> UnificationTable<K> where K: UnifyKey<Value=()>
[src]

//////////////////////////////////////////////////////////////////////// Base union-find algorithm, where we are just making setes

impl<'tcx, K, V> UnificationTable<K> where K: Debug + UnifyKey<Value=V>, V: UnifyValue
[src]

//////////////////////////////////////////////////////////////////////// Code to handle keys which carry an optional value, like ints, floats---anything that doesn't have a subtyping relationship we need to worry about.

Sets the value of the key a_id to b, attempting to merge with the previous value.