use std::cmp::Ordering;
use std::marker::PhantomData;
-pub struct DupsortFunc<'a, S, F>
+pub struct DupsortSource<'a, S, F>
where
S: Source<'a>,
F: Fn(&S::Item, &S::Item) -> Ordering,
phantom: PhantomData<&'a char>,
}
-impl<'a, S, F> DupsortFunc<'a, S, F>
+impl<'a, S, F> DupsortSource<'a, S, F>
where
S: Source<'a>,
F: Fn(&S::Item, &S::Item) -> Ordering,
}
}
-impl<'a, S, F> Source<'a> for DupsortFunc<'a, S, F>
+impl<'a, S, F> Source<'a> for DupsortSource<'a, S, F>
where
S: Source<'a>,
S::Item: PartialEq,
F: Fn(&S::Item, &S::Item) -> Ordering + 'a,
{
- type Iter = DupsortFuncIter<S::Iter, &'a F>;
+ type Iter = DupsortIter<S::Iter, &'a F>;
type Item = S::Item;
fn iter(&'a self) -> Self::Iter {
}
#[derive(Debug)]
-pub struct DupsortFuncIter<I, F>
+pub struct DupsortIter<I, F>
where
I: SeekableIter,
F: FnMut(&I::Item, &I::Item) -> Ordering,
dupsort_func: F,
}
-impl<I, F> DupsortFuncIter<I, F>
+impl<I, F> DupsortIter<I, F>
where
I: SeekableIter,
F: FnMut(&I::Item, &I::Item) -> Ordering,
}
}
-impl<I, F> Iterator for DupsortFuncIter<I, F>
+impl<I, F> Iterator for DupsortIter<I, F>
where
I: SeekableIter,
I::Item: PartialEq,
}
}
-impl<I, F> SeekableIter for DupsortFuncIter<I, F>
+impl<I, F> SeekableIter for DupsortIter<I, F>
where
I: SeekableIter,
I::Item: PartialEq,
-use crate::dupsort_func::DupsortFuncIter;
+use crate::dupsort::DupsortIter;
use crate::filter::FilterIter;
-use crate::merge_func::MergeFuncIter;
+use crate::merge::MergeIter;
use crate::Entry;
use std::cmp::Ordering;
use std::iter::Iterator;
pub trait SeekableIter: Iterator {
fn seek(&mut self, key: &[u8]);
- fn merge_func<F>(self, merge_func: F) -> MergeFuncIter<Self, F>
+ fn merge_func<F>(self, merge_func: F) -> MergeIter<Self, F>
where
F: FnMut(&mut Vec<u8>, &Entry),
Self: Sized,
{
- MergeFuncIter::new(self, merge_func)
+ MergeIter::new(self, merge_func)
}
- fn dupsort_func<F>(self, dupsort_func: F) -> DupsortFuncIter<Self, F>
+ fn dupsort_func<F>(self, dupsort_func: F) -> DupsortIter<Self, F>
where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
Self: Sized,
{
- DupsortFuncIter::new(self, dupsort_func)
+ DupsortIter::new(self, dupsort_func)
}
fn filter_func<F>(self, filter_func: F) -> FilterIter<Self, F>
mod compression;
-mod dupsort_func;
+mod dupsort;
mod entry;
mod filter;
mod iter;
-mod merge_func;
+mod merge;
mod merger;
pub mod reader;
pub mod sorter;
use crate::{Entry, SeekableIter, Source};
use std::marker::PhantomData;
-pub struct MergeFunc<'a, S: Source<'a>, F: Fn(&mut Vec<u8>, &Entry)> {
+pub struct MergeSource<'a, S: Source<'a>, F: Fn(&mut Vec<u8>, &Entry)> {
source: S,
merge_func: F,
phantom: PhantomData<&'a char>,
}
-impl<'a, S, F> MergeFunc<'a, S, F>
+impl<'a, S, F> MergeSource<'a, S, F>
where
S: Source<'a>,
F: Fn(&mut Vec<u8>, &Entry),
}
}
-impl<'a, S, F> Source<'a> for MergeFunc<'a, S, F>
+impl<'a, S, F> Source<'a> for MergeSource<'a, S, F>
where
S: Source<'a, Item = Entry>,
F: Fn(&mut Vec<u8>, &Entry) + 'a,
{
- type Iter = MergeFuncIter<S::Iter, &'a F>;
+ type Iter = MergeIter<S::Iter, &'a F>;
type Item = Entry;
fn iter(&'a self) -> Self::Iter {
self.source.iter().merge_func(&self.merge_func)
}
}
-pub struct MergeFuncIter<I, F: FnMut(&mut Vec<u8>, &Entry)> {
+pub struct MergeIter<I, F: FnMut(&mut Vec<u8>, &Entry)> {
prev: Option<Entry>,
iter: I,
merge_func: F,
}
-impl<I, F> MergeFuncIter<I, F>
+impl<I, F> MergeIter<I, F>
where
F: FnMut(&mut Vec<u8>, &Entry),
{
}
}
-impl<I, F> Iterator for MergeFuncIter<I, F>
+impl<I, F> Iterator for MergeIter<I, F>
where
I: Iterator<Item = Entry>,
F: FnMut(&mut Vec<u8>, &Entry),
}
}
-impl<I, F> SeekableIter for MergeFuncIter<I, F>
+impl<I, F> SeekableIter for MergeIter<I, F>
where
I: SeekableIter<Item = Entry>,
F: FnMut(&mut Vec<u8>, &Entry),
-use crate::dupsort_func::DupsortFunc;
+use crate::dupsort::DupsortSource;
use crate::filter::FilterSource;
use crate::iter::{PrefixIter, RangeIter};
-use crate::merge_func::MergeFunc;
+use crate::merge::MergeSource;
use crate::{Entry, SeekableIter};
pub trait Source<'a> {
RangeIter::new(self.iter(), start, end)
}
- fn merge_func<F>(self, merge_func: F) -> MergeFunc<'a, Self, F>
+ fn merge_func<F>(self, merge_func: F) -> MergeSource<'a, Self, F>
where
Self: Sized,
F: Fn(&mut Vec<u8>, &Entry),
{
- MergeFunc::new(self, merge_func)
+ MergeSource::new(self, merge_func)
}
- fn dupsort_func<F>(self, dupsort_func: F) -> DupsortFunc<'a, Self, F>
+ fn dupsort_func<F>(self, dupsort_func: F) -> DupsortSource<'a, Self, F>
where
Self: Sized,
F: Fn(&Self::Item, &Self::Item) -> std::cmp::Ordering,
{
- DupsortFunc::new(self, dupsort_func)
+ DupsortSource::new(self, dupsort_func)
}
fn filter<F>(self, filter_func: F) -> FilterSource<'a, Self, F>