Mercurial > lbo > hg > leveldb-rs
changeset 197:41ded1d98935
memtable: Remove lifetime from memtable iterator.
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 02 Sep 2017 18:35:22 +0200 |
parents | 1833c6050932 |
children | dcaa24234955 |
files | src/memtable.rs |
diffstat | 1 files changed, 20 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/memtable.rs Mon Aug 28 20:48:30 2017 +0200 +++ b/src/memtable.rs Sat Sep 02 18:35:22 2017 +0200 @@ -64,20 +64,16 @@ Err(Status::new(StatusCode::NotFound, "")) } - pub fn iter<'a>(&'a self) -> MemtableIterator<'a> { - MemtableIterator { - _tbl: self, - skipmapiter: self.map.iter(), - } + pub fn iter(&self) -> MemtableIterator { + MemtableIterator { skipmapiter: self.map.iter() } } } -pub struct MemtableIterator<'a> { - _tbl: &'a MemTable, +pub struct MemtableIterator { skipmapiter: SkipMapIter, } -impl<'a> LdbIterator for MemtableIterator<'a> { +impl LdbIterator for MemtableIterator { fn advance(&mut self) -> bool { // Make sure this is actually needed. let (mut key, mut val) = (vec![], vec![]); @@ -166,7 +162,7 @@ mod tests { use super::*; use key_types::*; - use test_util::LdbIteratorIter; + use test_util::{test_iterator_properties, LdbIteratorIter}; use types::*; use options::Options; @@ -333,4 +329,19 @@ assert_eq!(vallen, 3); assert_eq!(&key[valoff..valoff + vallen], vec![4, 5, 6].as_slice()); } + + #[test] + fn test_memtable_iterator_behavior() { + let mut mt = MemTable::new(Options::default()); + let entries = vec![(115, "abc", "122"), + (120, "abc", "123"), + (121, "abd", "124"), + (123, "abf", "126")]; + + for e in entries.iter() { + mt.add(e.0, ValueType::TypeValue, e.1.as_bytes(), e.2.as_bytes()); + } + + test_iterator_properties(mt.iter()); + } }