Struct differential_dataflow::trace::layers::hashed::HashedBuilder
[−]
[src]
pub struct HashedBuilder<K: HashOrdered, L> { pub keys: Vec<Entry<K>>, pub vals: L, // some fields omitted }
Assembles a layer of this
Fields
keys: Vec<Entry<K>>
Entries in the hash map.
vals: L
A builder for the layer below.
Trait Implementations
impl<K: HashOrdered + Clone + Default, L: Builder> Builder for HashedBuilder<K, L>
[src]
type Trie = HashedLayer<K, L::Trie>
The type of collection produced.
fn boundary(&mut self) -> usize
[src]
Looks at the contents of self.temp and extends self.keys appropriately.
This is where the "hash map" structure is produced. Up until this point, all (key, usize) pairs were committed to self.temp, where they awaited layout. That now happens here.
fn done(self) -> Self::Trie
[src]
Finalizes the building process and returns the collection.
impl<K: HashOrdered + Clone + Default, L: MergeBuilder> MergeBuilder for HashedBuilder<K, L>
[src]
fn with_capacity(other1: &Self::Trie, other2: &Self::Trie) -> Self
[src]
Allocates an instance of the builder with sufficient capacity to contain the merged data.
fn copy_range(&mut self, other: &Self::Trie, lower: usize, upper: usize)
[src]
Copies fully formed ranges (note plural) of keys from another trie.
While the ranges are fully formed, the offsets in them are relative to the other trie, and must be corrected. These keys must be moved immediately to self.keys, as there is no info about boundaries between them, and we are unable to lay out the info any differently.
fn push_merge(
&mut self,
other1: (&Self::Trie, usize, usize),
other2: (&Self::Trie, usize, usize)
) -> usize
[src]
&mut self,
other1: (&Self::Trie, usize, usize),
other2: (&Self::Trie, usize, usize)
) -> usize
Merges two sub-collections into one sub-collection.
impl<K: HashOrdered + Clone + Default, L: TupleBuilder> TupleBuilder for HashedBuilder<K, L>
[src]
type Item = (K, L::Item)
The type of item accepted for construction.
fn new() -> Self
[src]
Allocates a new builder.
fn with_capacity(cap: usize) -> Self
[src]
Allocates a new builder with capacity for at least cap
tuples.
fn push_tuple(&mut self, (key, val): (K, L::Item))
[src]
Inserts a new into the collection.