pub struct LayerBuilder<K, L, O = usize>{
pub keys: Box<DynVec<K>>,
pub offs: Vec<O>,
pub vals: L,
/* private fields */
}Expand description
Assembles a layer of this
Fields§
§keys: Box<DynVec<K>>Keys
offs: Vec<O>Offsets
vals: LThe next layer down
Implementations§
Source§impl<K, L, O> LayerBuilder<K, L, O>
impl<K, L, O> LayerBuilder<K, L, O>
Sourcepub fn merge_step(
&mut self,
(trie1, lower1, upper1): (&Layer<K, L::Trie, O>, &mut usize, usize),
(trie2, lower2, upper2): (&Layer<K, L::Trie, O>, &mut usize, usize),
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)where
L: MergeBuilder,
O: OrdOffset,
pub fn merge_step(
&mut self,
(trie1, lower1, upper1): (&Layer<K, L::Trie, O>, &mut usize, usize),
(trie2, lower2, upper2): (&Layer<K, L::Trie, O>, &mut usize, usize),
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)where
L: MergeBuilder,
O: OrdOffset,
Performs one step of merging.
pub fn merge_step_retain_keys<F>( &mut self, (trie1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize), (trie2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize), filter: &F, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, )
Source§impl<K, L, O> LayerBuilder<K, L, O>
impl<K, L, O> LayerBuilder<K, L, O>
Sourcepub fn push_merge_fueled(
&mut self,
(source1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize),
(source2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize),
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
fuel: &mut isize,
)
pub fn push_merge_fueled( &mut self, (source1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize), (source2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize), map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, fuel: &mut isize, )
Like push_merge, but uses fuel to bound the amount of work.
Builds at most fuel values plus values for one extra key.
If fuel > 0 when the method returns, this means that the merge is
complete.
pub fn push_merge_retain_keys_fueled<F>( &mut self, (source1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize), (source2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize), filter: &F, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, fuel: &mut isize, )
Sourcepub fn copy_range_fueled(
&mut self,
other: &<Self as Builder>::Trie,
lower: usize,
upper: usize,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
fuel: usize,
) -> usize
pub fn copy_range_fueled( &mut self, other: &<Self as Builder>::Trie, lower: usize, upper: usize, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, fuel: usize, ) -> usize
Like copy_range, but uses fuel to bound the amount of work.
Invariants:
- Copies at most
fuelvalues plus values for one extra key. - If
fuelis greater than or equal to the number of values, in thelower..upperkey range, copies the entire range.
Source§impl<K, V, L, O> LayerBuilder<K, L, O>
impl<K, V, L, O> LayerBuilder<K, L, O>
Sourcepub fn push_merge_retain_values_fueled<KF, VF>(
&mut self,
(source1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize),
(source2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize),
key_filter: &KF,
value_filter: &VF,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
fuel: &mut isize,
)
pub fn push_merge_retain_values_fueled<KF, VF>( &mut self, (source1, lower1, upper1): (&<Self as Builder>::Trie, &mut usize, usize), (source2, lower2, upper2): (&<Self as Builder>::Trie, &mut usize, usize), key_filter: &KF, value_filter: &VF, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, fuel: &mut isize, )
Like push_merge_fueled, but also removes values that don’t pass
filter in both inputs.
Trait Implementations§
Source§impl<K, L, O> Builder for LayerBuilder<K, L, O>
impl<K, L, O> Builder for LayerBuilder<K, L, O>
Source§impl<K, L, O: Clone> Clone for LayerBuilder<K, L, O>
impl<K, L, O: Clone> Clone for LayerBuilder<K, L, O>
Source§fn clone(&self) -> LayerBuilder<K, L, O>
fn clone(&self) -> LayerBuilder<K, L, O>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<K, L, O> Debug for LayerBuilder<K, L, O>
impl<K, L, O> Debug for LayerBuilder<K, L, O>
Source§impl<K, L, O> MergeBuilder for LayerBuilder<K, L, O>
impl<K, L, O> MergeBuilder for LayerBuilder<K, L, O>
Source§fn with_capacity(other1: &Self::Trie, other2: &Self::Trie) -> Self
fn with_capacity(other1: &Self::Trie, other2: &Self::Trie) -> Self
Allocates an instance of the builder with sufficient capacity to contain
the merged data.
fn reserve(&mut self, additional: usize)
Source§fn copy_range(
&mut self,
other: &Self::Trie,
lower: usize,
upper: usize,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)
fn copy_range( &mut self, other: &Self::Trie, lower: usize, upper: usize, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, )
Copy a range of
other into this collection.Source§fn copy_range_retain_keys<'a, F>(
&mut self,
other: &'a Self::Trie,
lower: usize,
upper: usize,
filter: &F,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)
fn copy_range_retain_keys<'a, F>( &mut self, other: &'a Self::Trie, lower: usize, upper: usize, filter: &F, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, )
Copy a range of
other into this collection, only retaining
entries whose keys satisfy the filter condition.Source§fn push_merge<'a>(
&'a mut self,
cursor1: <Self::Trie as Trie>::Cursor<'a>,
cursor2: <Self::Trie as Trie>::Cursor<'a>,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)
fn push_merge<'a>( &'a mut self, cursor1: <Self::Trie as Trie>::Cursor<'a>, cursor2: <Self::Trie as Trie>::Cursor<'a>, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, )
Merges two sub-collections into one sub-collection. Read more
Source§fn push_merge_retain_keys<'a, F>(
&'a mut self,
cursor1: <Self::Trie as Trie>::Cursor<'a>,
cursor2: <Self::Trie as Trie>::Cursor<'a>,
filter: &F,
map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>,
)
fn push_merge_retain_keys<'a, F>( &'a mut self, cursor1: <Self::Trie as Trie>::Cursor<'a>, cursor2: <Self::Trie as Trie>::Cursor<'a>, filter: &F, map_func: Option<&dyn Fn(&mut <<Self as Builder>::Trie as Trie>::LeafKey)>, )
Merges two sub-collections into one sub-collection, only
retaining entries whose keys satisfy the
filter condition.Source§impl<K, L, O> SizeOf for LayerBuilder<K, L, O>
impl<K, L, O> SizeOf for LayerBuilder<K, L, O>
Source§fn size_of_children(&self, context: &mut Context)
fn size_of_children(&self, context: &mut Context)
Gets the size of all “children” owned by this value, not including the
size of the value itself. Read more
Source§fn size_of_with_context(&self, context: &mut Context)
fn size_of_with_context(&self, context: &mut Context)
Adds the size of the current value to the given
Context,
including both the size of the value itself and all of its childrenSource§impl<K, L, O> TupleBuilder for LayerBuilder<K, L, O>
impl<K, L, O> TupleBuilder for LayerBuilder<K, L, O>
Source§fn with_capacity(
factories: &<Self::Trie as Trie>::Factories,
cap: usize,
) -> Self
fn with_capacity( factories: &<Self::Trie as Trie>::Factories, cap: usize, ) -> Self
Allocates a new builder with capacity for at least
cap tuples.Source§fn reserve_tuples(&mut self, additional: usize)
fn reserve_tuples(&mut self, additional: usize)
Reserve space for
additional new tuples to be added to the current
builderfn tuples(&self) -> usize
Source§fn push_tuple<'a>(&mut self, (key, val): (&mut K, <L::Trie as Trie>::Item<'_>))
fn push_tuple<'a>(&mut self, (key, val): (&mut K, <L::Trie as Trie>::Item<'_>))
Inserts a new tuple into the current builder
fn push_refs<'a>(&mut self, (key, val): (&K, <L::Trie as Trie>::ItemRef<'_>))
Source§fn extend_tuples<'a, I>(&'a mut self, tuples: I)
fn extend_tuples<'a, I>(&'a mut self, tuples: I)
Inserts all of the given tuples into the current builder
Auto Trait Implementations§
impl<K, L, O = usize> !RefUnwindSafe for LayerBuilder<K, L, O>
impl<K, L, O = usize> !UnwindSafe for LayerBuilder<K, L, O>
impl<K, L, O> Freeze for LayerBuilder<K, L, O>
impl<K, L, O> Send for LayerBuilder<K, L, O>
impl<K, L, O> Sync for LayerBuilder<K, L, O>
impl<K, L, O> Unpin for LayerBuilder<K, L, O>
impl<K, L, O> UnsafeUnpin for LayerBuilder<K, L, O>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Data for Twhere
T: Clone + 'static,
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.