[][src]Struct exonum_merkledb::migration::Migration

pub struct Migration<T> { /* fields omitted */ }

Access to migrated indexes.

Migration is conceptually similar to a Prefixed access. For example, an index with address "list" in a migration Migration::new("foo", _) will map to the address "foo.list" after the migration is flushed. The major difference with Prefixed is that the indexes in a migration cannot be accessed in any other way. That is, it is impossible to access an index in a migration without constructing a Migration object first.

Methods

impl<T: RawAccess> Migration<T>[src]

pub fn new(namespace: impl Into<String>, access: T) -> Self[src]

Creates a migration in the specified namespace.

pub fn state_hash(&self) -> Hash[src]

Returns the state hash of indexes within the migration. The state hash is up to date for Snapshots (including Patches), but is generally stale for Forks.

impl<T: RawAccess + AsReadonly> Migration<T>[src]

pub fn state_aggregator(&self) -> ProofMapIndex<T::Readonly, str, Hash>[src]

Returns the state aggregator for the indexes within the migration. The aggregator is up to date for Snapshots (including Patches), but is generally stale for Forks.

Note that keys in the aggregator are full addresses, which include the migration namespace, as is the case for the default aggregator.

Examples

let db = TemporaryDB::new();
let fork = db.fork();
{
    let migration = Migration::new("migration", &fork);
    migration.get_proof_entry("entry").set(42);
}
let patch = fork.into_patch();
let migration_view = Migration::new("migration", &patch);
let aggregator = migration_view.state_aggregator();
assert!(aggregator.contains("migration.entry")); // Not "entry": `state_aggregator` uses
                                                 // full index names as keys.

impl<T: RawAccessMut> Migration<T>[src]

pub fn create_tombstone<I>(&self, addr: I) where
    I: Into<IndexAddress>, 
[src]

Marks an index with the specified address as removed during migration.

Panics

Panics if an index already exists at the specified address.

Trait Implementations

impl<T: RawAccess> Access for Migration<T>[src]

type Base = T

Raw access serving as the basis for created indexes.

impl<T: Clone> Clone for Migration<T>[src]

impl<T: Debug> Debug for Migration<T>[src]

impl<T: RawAccess> From<Migration<T>> for GenericAccess<T>[src]

impl<'a, T> IntoErased<'a> for Migration<T> where
    T: Into<GenericRawAccess<'a>>, 
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Migration<T> where
    T: RefUnwindSafe

impl<T> Send for Migration<T> where
    T: Send

impl<T> Sync for Migration<T> where
    T: Sync

impl<T> Unpin for Migration<T> where
    T: Unpin

impl<T> UnwindSafe for Migration<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Access for T where
    T: RawAccess
[src]

type Base = T

Raw access serving as the basis for created indexes.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,