Struct rustc_data_structures::unify::UnificationTable
[−]
[src]
pub struct UnificationTable<K: UnifyKey> { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Table of unification keys and their values.
Methods
impl<K: UnifyKey> UnificationTable<K>
[src]
We can't use V:LatticeValue, much as I would like to, because frequently the pattern is that V=Option for some other type parameter U, and we have no way to say Option:LatticeValue.
pub fn new() -> UnificationTable<K>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn snapshot(&mut self) -> Snapshot<K>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Starts a new snapshot. Each snapshot must be either rolled back or committed in a "LIFO" (stack) order.
pub fn rollback_to(&mut self, snapshot: Snapshot<K>)
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Reverses all changes since the last snapshot. Also removes any keys that have been created since then.
pub fn commit(&mut self, snapshot: Snapshot<K>)
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Commits all changes since the last snapshot. Of course, they can still be undone if there is a snapshot further out.
pub fn new_key(&mut self, value: K::Value) -> K
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
impl<'tcx, K: UnifyKey> UnificationTable<K> where
K::Value: Combine,
[src]
K::Value: Combine,
pub fn union(&mut self, a_id: K, b_id: K) -> K
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn find(&mut self, id: K) -> K
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn find_value(&mut self, id: K) -> K::Value
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
impl<'tcx, K, V> UnificationTable<K> where
K: UnifyKey<Value = Option<V>>,
V: Clone + PartialEq + Debug,
[src]
K: UnifyKey<Value = Option<V>>,
V: Clone + PartialEq + Debug,
Non-subtyping unification
Code to handle keys which carry a value, like ints, floats---anything that doesn't have a subtyping relationship we need to worry about.
pub fn unify_var_var(&mut self, a_id: K, b_id: K) -> Result<K, (V, V)>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn unify_var_value(&mut self, a_id: K, b: V) -> Result<(), (V, V)>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Sets the value of the key a_id
to b
. Because simple keys do not have any subtyping
relationships, if a_id
already has a value, it must be the same as b
.
pub fn has_value(&mut self, id: K) -> bool
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn probe(&mut self, a_id: K) -> Option<V>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn unsolved_variables(&mut self) -> Vec<K>
[src]
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?