Struct rustc_ap_rustc_data_structures::unify::UnificationTable[][src]

pub struct UnificationTable<S> where
    S: UnificationStoreBase
{ /* fields omitted */ }
Expand description

Table of unification keys and their values. You must define a key type K that implements the UnifyKey trait. Unification tables can be used in two-modes:

  • in-place (UnificationTable<InPlace<K>> or InPlaceUnificationTable<K>):
    • This is the standard mutable mode, where the array is modified in place.
    • To do backtracking, you can employ the snapshot and rollback_to methods.
  • persistent (UnificationTable<Persistent<K>> or PersistentUnificationTable<K>):
    • In this mode, we use a persistent vector to store the data, so that cloning the table is an O(1) operation.
    • This implies that ordinary operations are quite a bit slower though.
    • Requires the persistent feature be selected in your Cargo.toml file.

Implementations

Creates a UnificationTable using an external undo_log, allowing mutating methods to be called if L does not implement UndoLogs

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.

Returns the keys of all variables created since the snapshot.

Returns the number of keys created so far.

Starts a new snapshot. Each snapshot must be either Creates a fresh key with the given value.

Reserve memory for num_new_keys to be created. Does not actually create the new keys; you must then invoke new_key.

Clears all unifications that have been performed, resetting to the initial state. The values of each variable are given by the closure.

//////////////////////////////////////////////////////////////////////// Public API

Unions two keys without the possibility of failure; only applicable when unify values use NoError as their error type.

Unions a key and a value without the possibility of failure; only applicable when unify values use NoError as their error type.

Given two keys, indicates whether they have been unioned together.

Given a key, returns the (current) root key.

Unions together two variables, merging their values. If merging the values fails, the error is propagated and this method has no effect.

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

Returns the current value for the given key. If the key has been union’d, this will give the value from the current root.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.