[][src]Trait rustc_ap_rustc_data_structures::unify::UnificationStore

pub trait UnificationStore: Clone + Default + Index<usize, Output = VarValue<Self::Key>> where
    <Self::Key as UnifyKey>::Value == Self::Value
{ type Key: UnifyKey; type Value: UnifyValue; type Snapshot; fn start_snapshot(&mut self) -> Self::Snapshot;
fn rollback_to(&mut self, snapshot: Self::Snapshot);
fn commit(&mut self, snapshot: Self::Snapshot);
fn values_since_snapshot(&self, snapshot: &Self::Snapshot) -> Range<usize>;
fn reset_unifications(
        &mut self,
        value: impl FnMut(u32) -> VarValue<Self::Key>
    );
fn len(&self) -> usize;
fn push(&mut self, value: VarValue<Self::Key>);
fn reserve(&mut self, num_new_values: usize);
fn update<F>(&mut self, index: usize, op: F)
    where
        F: FnOnce(&mut VarValue<Self::Key>)
; fn tag() -> &'static str { ... } }

Largely internal trait implemented by the unification table backing store types. The most common such type is InPlace, which indicates a standard, mutable unification table.

Associated Types

Loading content...

Required methods

fn start_snapshot(&mut self) -> Self::Snapshot

fn rollback_to(&mut self, snapshot: Self::Snapshot)

fn commit(&mut self, snapshot: Self::Snapshot)

Important traits for Range<A>
fn values_since_snapshot(&self, snapshot: &Self::Snapshot) -> Range<usize>

fn reset_unifications(&mut self, value: impl FnMut(u32) -> VarValue<Self::Key>)

fn len(&self) -> usize

fn push(&mut self, value: VarValue<Self::Key>)

fn reserve(&mut self, num_new_values: usize)

fn update<F>(&mut self, index: usize, op: F) where
    F: FnOnce(&mut VarValue<Self::Key>), 

Loading content...

Provided methods

fn tag() -> &'static str

Loading content...

Implementors

impl<K> UnificationStore for InPlace<K> where
    K: UnifyKey
[src]

type Key = K

type Value = <K as UnifyKey>::Value

type Snapshot = Snapshot

Loading content...