[][src]Struct differential_dataflow::trace::layers::hashed::HashedLayer

pub struct HashedLayer<K: HashOrdered, L> {
    pub keys: Vec<Entry<K>>,
    pub vals: L,
}

A level of the trie, with keys and offsets into a lower layer.

If keys[i].1 == 0 then entry i should be ignored. This is our version of Option<(K, usize)>, which comes at the cost of requiring K: Default to populate empty keys.

Each region of this layer is an independent immutable RHH map, whose size should equal something like (1 << i) + i for some value of i. The first (1 << i) elements are where we expect to find keys, and the remaining i are for spill-over due to collisions near the end of the first region.

We might do something like "if X or fewer elements, just use an ordered list".

Fields

keys: Vec<Entry<K>>

Keys and offsets for the keys.

vals: L

A lower layer containing ranges of values.

Trait Implementations

impl<K: Clone + HashOrdered + Default, L: Trie> Trie for HashedLayer<K, L>[src]

type Item = (K, L::Item)

The type of item from which the type is constructed.

type Cursor = HashedCursor<L>

The type of cursor used to navigate the type.

type MergeBuilder = HashedBuilder<K, L::MergeBuilder>

The type used to merge instances of the type together.

type TupleBuilder = HashedBuilder<K, L::TupleBuilder>

The type used to assemble instances of the type from its Items.

fn cursor(&self) -> Self::Cursor[src]

Returns a cursor capable of navigating the collection.

fn merge(&self, other: &Self) -> Self[src]

Merges two collections into a third. Read more

impl<K: HashOrdered, L: Trie> Cursor<HashedLayer<K, L>> for HashedCursor<L>[src]

type Key = K

The type revealed by the cursor.

impl<K: Debug + HashOrdered, L: Debug> Debug for HashedLayer<K, L>[src]

Auto Trait Implementations

impl<K, L> Send for HashedLayer<K, L> where
    K: Send,
    L: Send

impl<K, L> Sync for HashedLayer<K, L> where
    K: Sync,
    L: Sync

Blanket Implementations

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

impl<T> From for T[src]

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

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

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

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

The type returned in the event of a conversion error.