[][src]Struct exonum_merkledb::indexes::MapIndex

pub struct MapIndex<T: RawAccess, K: ?Sized, V> { /* fields omitted */ }

A map of keys and values. Access to the elements of this map is obtained using the keys.

MapIndex requires that keys implement the BinaryKey trait and values implement the BinaryValue trait.

Methods

impl<T, K: ?Sized, V> MapIndex<T, K, V> where
    T: RawAccess,
    K: BinaryKey,
    V: BinaryValue
[src]

pub fn get(&self, key: &K) -> Option<V>[src]

Returns a value corresponding to the key.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let mut index = fork.get_map("name");
assert!(index.get(&1).is_none());

index.put(&1, 2);
assert_eq!(Some(2), index.get(&1));

pub fn contains(&self, key: &K) -> bool[src]

Returns true if the map contains a value corresponding to the specified key.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let mut index = fork.get_map("name");
assert!(!index.contains(&1));

index.put(&1, 2);
assert!(index.contains(&1));

pub fn iter(&self) -> Entries<K, V>[src]

Returns an iterator over the entries of the map in ascending order.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");

for v in index.iter() {
    println!("{:?}", v);
}

pub fn keys(&self) -> Keys<K>[src]

Returns an iterator over the keys of a map in ascending order.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");

for key in index.keys() {
    println!("{}", key);
}

pub fn values(&self) -> Values<V>[src]

Returns an iterator over the values of a map in ascending order of keys.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");

for val in index.values() {
    println!("{}", val);
}

pub fn iter_from(&self, from: &K) -> Entries<K, V>[src]

Returns an iterator over the entries of a map in ascending order starting from the specified key.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");

for v in index.iter_from(&2) {
    println!("{:?}", v);
}

pub fn keys_from(&self, from: &K) -> Keys<K>[src]

Returns an iterator over the keys of a map in ascending order starting from the specified key.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");

for key in index.keys_from(&2) {
    println!("{}", key);
}

pub fn values_from(&self, from: &K) -> Values<V>[src]

Returns an iterator over the values of a map in ascending order of keys starting from the specified key.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let index: MapIndex<_, u8, u8> = fork.get_map("name");
for val in index.values_from(&2) {
    println!("{}", val);
}

impl<T, K: ?Sized, V> MapIndex<T, K, V> where
    T: RawAccessMut,
    K: BinaryKey,
    V: BinaryValue
[src]

pub fn put(&mut self, key: &K, value: V)[src]

Inserts a key-value pair into a map.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let mut index = fork.get_map("name");

index.put(&1, 2);
assert!(index.contains(&1));

pub fn remove<Q: ?Sized>(&mut self, key: &Q) where
    K: Borrow<Q>,
    Q: BinaryKey
[src]

Removes a key from a map.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let mut index = fork.get_map("name");

index.put(&1, 2);
assert!(index.contains(&1));

index.remove(&1);
assert!(!index.contains(&1));

pub fn clear(&mut self)[src]

Clears a map, removing all entries.

Notes

Currently, this method is not optimized to delete a large set of data. During the execution of this method, the amount of allocated memory is linearly dependent on the number of elements in the index.

Examples

use exonum_merkledb::{access::CopyAccessExt, TemporaryDB, Database, MapIndex};

let db = TemporaryDB::default();
let fork = db.fork();
let mut index = fork.get_map("name");

index.put(&1, 2);
assert!(index.contains(&1));

index.clear();
assert!(!index.contains(&1));

Trait Implementations

impl<T: Debug + RawAccess, K: Debug + ?Sized, V: Debug> Debug for MapIndex<T, K, V>[src]

impl<T, K: ?Sized, V> FromAccess<T> for MapIndex<T::Base, K, V> where
    T: Access,
    K: BinaryKey,
    V: BinaryValue
[src]

impl<T, K: ?Sized, V> IndexIterator for MapIndex<T, K, V> where
    T: RawAccess,
    K: BinaryKey,
    V: BinaryValue
[src]

type Key = K

Type encompassing index keys.

type Value = V

Type encompassing index values.

impl<'a, T, K: ?Sized, V> IntoIterator for &'a MapIndex<T, K, V> where
    T: RawAccess,
    K: BinaryKey,
    V: BinaryValue
[src]

type Item = (K::Owned, V)

The type of the elements being iterated over.

type IntoIter = Entries<'a, K, V>

Which kind of iterator are we turning this into?

Auto Trait Implementations

impl<T, K: ?Sized, V> RefUnwindSafe for MapIndex<T, K, V> where
    K: RefUnwindSafe,
    T: RefUnwindSafe,
    V: RefUnwindSafe,
    <T as RawAccess>::Changes: RefUnwindSafe

impl<T, K: ?Sized, V> Send for MapIndex<T, K, V> where
    K: Send,
    T: Send,
    V: Send,
    <T as RawAccess>::Changes: Send

impl<T, K: ?Sized, V> Sync for MapIndex<T, K, V> where
    K: Sync,
    T: Sync,
    V: Sync,
    <T as RawAccess>::Changes: Sync

impl<T, K: ?Sized, V> Unpin for MapIndex<T, K, V> where
    K: Unpin,
    T: Unpin,
    V: Unpin,
    <T as RawAccess>::Changes: Unpin

impl<T, K: ?Sized, V> UnwindSafe for MapIndex<T, K, V> where
    K: UnwindSafe,
    T: UnwindSafe,
    V: UnwindSafe,
    <T as RawAccess>::Changes: UnwindSafe

Blanket Implementations

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, 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>,