pub struct Collector<K, V>where
K: Encode + Ord,
V: Compress,{ /* private fields */ }Expand description
An ETL (extract, transform, load) data collector.
Data is pushed (extract) to the collector which internally flushes the data in a sorted (transform) manner to files of some specified capacity. the data can later be iterated over (load) in a sorted manner.
Used mainly to insert data into MDBX in a sorted manner. This is important because performance
and storage space degrades greatly if the data is inserted unsorted (eg. tables with hashes as
keys.) as opposed to append & sorted insert. Some benchmarks can be found here.
Implementations§
Source§impl<K, V> Collector<K, V>where
K: Key,
V: Value,
impl<K, V> Collector<K, V>where
K: Key,
V: Value,
Sourcepub const fn new(
buffer_capacity_bytes: usize,
parent_dir: Option<PathBuf>,
) -> Self
pub const fn new( buffer_capacity_bytes: usize, parent_dir: Option<PathBuf>, ) -> Self
Create a new collector with some capacity.
Once the capacity (in bytes) is reached, the data is sorted and flushed to disk.
Sourcepub const fn is_empty(&self) -> bool
pub const fn is_empty(&self) -> bool
Returns true if there are currently no elements in the collector.
Trait Implementations§
Auto Trait Implementations§
impl<K, V> Freeze for Collector<K, V>
impl<K, V> RefUnwindSafe for Collector<K, V>where
Vec<(<K as Encode>::Encoded, <V as Compress>::Compressed)>: RefUnwindSafe,
impl<K, V> Send for Collector<K, V>
impl<K, V> Sync for Collector<K, V>
impl<K, V> Unpin for Collector<K, V>
impl<K, V> UnsafeUnpin for Collector<K, V>where
Vec<(<K as Encode>::Encoded, <V as Compress>::Compressed)>: UnsafeUnpin,
impl<K, V> UnwindSafe for Collector<K, V>where
Vec<(<K as Encode>::Encoded, <V as Compress>::Compressed)>: UnwindSafe,
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
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> ⓘ
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 moreimpl<T> MaybeDebug for Twhere
T: Debug,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 120 bytes