From d2e5fd0546bde95fbc80773983d3c83ef8497c5c Mon Sep 17 00:00:00 2001 From: Chris Mikkelson Date: Sun, 28 Apr 2024 13:52:14 -0500 Subject: [PATCH] Move SeekableVec to module for test support --- src/seekable.rs | 1 + src/seekable/merge.rs | 44 ++----------------------------------------- src/seekable/vec.rs | 43 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 42 deletions(-) create mode 100644 src/seekable/vec.rs diff --git a/src/seekable.rs b/src/seekable.rs index 6d422f4..7b23ec5 100644 --- a/src/seekable.rs +++ b/src/seekable.rs @@ -1,5 +1,6 @@ mod filter_map; mod merge; +mod vec; pub use filter_map::FilterMap; pub use merge::Merger; diff --git a/src/seekable/merge.rs b/src/seekable/merge.rs index c099b34..1f2bb78 100644 --- a/src/seekable/merge.rs +++ b/src/seekable/merge.rs @@ -155,50 +155,10 @@ impl Seekable for Merger { #[cfg(test)] mod test { - use crate::seekable::{Iter, Seekable}; + use crate::seekable::vec::SeekableVec; + use crate::Seekable; use std::cmp::Ordering; - #[derive(Debug)] - struct SeekableVec { - off: usize, - v: Vec, - } - impl IntoIterator for SeekableVec { - type Item = (T, ()); - type IntoIter = Iter; - fn into_iter(self) -> Iter { - Iter(self) - } - } - impl Seekable for SeekableVec { - type Key = T; - type Value = (); - fn next(&mut self) -> Option<(T, ())> { - if self.off >= self.v.len() { - return None; - } - let v = self.v[self.off]; - self.off += 1; - Some((v, ())) - } - fn seek(&mut self, key: &T) { - self.off = 0; - while self.off < self.v.len() { - if self.v[self.off] >= *key { - break; - } - self.off += 1; - } - } - } - impl From> for SeekableVec { - fn from(vec: Vec) -> SeekableVec { - let mut sv = SeekableVec { off: 0, v: vec }; - sv.v.sort(); - sv - } - } - #[test] fn test_seekablevec() { let mut v = vec![3, 1, 4, 1, 5, 9]; diff --git a/src/seekable/vec.rs b/src/seekable/vec.rs new file mode 100644 index 0000000..17e7559 --- /dev/null +++ b/src/seekable/vec.rs @@ -0,0 +1,43 @@ +use crate::seekable::Iter; +use crate::Seekable; + +#[derive(Debug)] +pub struct SeekableVec { + off: usize, + v: Vec, +} +impl IntoIterator for SeekableVec { + type Item = (T, ()); + type IntoIter = Iter; + fn into_iter(self) -> Iter { + Iter(self) + } +} +impl Seekable for SeekableVec { + type Key = T; + type Value = (); + fn next(&mut self) -> Option<(T, ())> { + if self.off >= self.v.len() { + return None; + } + let v = self.v[self.off]; + self.off += 1; + Some((v, ())) + } + fn seek(&mut self, key: &T) { + self.off = 0; + while self.off < self.v.len() { + if self.v[self.off] >= *key { + break; + } + self.off += 1; + } + } +} +impl From> for SeekableVec { + fn from(vec: Vec) -> SeekableVec { + let mut sv = SeekableVec { off: 0, v: vec }; + sv.v.sort(); + sv + } +} -- 2.50.1