Trait rusty_leveldb::LdbIterator
source · [−]pub trait LdbIterator {
fn advance(&mut self) -> bool;
fn current(&self, key: &mut Vec<u8>, val: &mut Vec<u8>) -> bool;
fn seek(&mut self, key: &[u8]);
fn reset(&mut self);
fn valid(&self) -> bool;
fn prev(&mut self) -> bool;
fn next(&mut self) -> Option<(Vec<u8>, Vec<u8>)> { ... }
fn seek_to_first(&mut self) { ... }
}
Expand description
An extension of the standard Iterator
trait that supports some methods necessary for LevelDB.
This works because the iterators used are stateful and keep the last returned element.
Note: Implementing types are expected to hold !valid()
before the first call to advance()
.
test_util::test_iterator_properties() verifies that all properties hold.
Required Methods
sourcefn advance(&mut self) -> bool
fn advance(&mut self) -> bool
Advances the position of the iterator by one element (which can be retrieved using current(). If no more elements are available, advance() returns false, and the iterator becomes invalid (i.e. as if reset() had been called).
sourcefn current(&self, key: &mut Vec<u8>, val: &mut Vec<u8>) -> bool
fn current(&self, key: &mut Vec<u8>, val: &mut Vec<u8>) -> bool
Return the current item (i.e. the item most recently returned by next()
).
sourcefn seek(&mut self, key: &[u8])
fn seek(&mut self, key: &[u8])
Seek the iterator to key
or the next bigger key. If the seek is invalid (past last
element, or before first element), the iterator is reset()
and not valid.
sourcefn reset(&mut self)
fn reset(&mut self)
Resets the iterator to be !valid()
, i.e. positioned before the first element.
Provided Methods
sourcefn next(&mut self) -> Option<(Vec<u8>, Vec<u8>)>
fn next(&mut self) -> Option<(Vec<u8>, Vec<u8>)>
next is like Iterator::next(). It’s implemented here because Rust disallows implementing a
foreign trait for any type, thus we can’t do impl<T: LdbIterator> Iterator<Item=Vec<u8>> for T {}
.
sourcefn seek_to_first(&mut self)
fn seek_to_first(&mut self)
seek_to_first seeks to the first element.
Trait Implementations
sourceimpl LdbIterator for Box<dyn LdbIterator>
impl LdbIterator for Box<dyn LdbIterator>
sourcefn advance(&mut self) -> bool
fn advance(&mut self) -> bool
sourcefn current(&self, key: &mut Vec<u8>, val: &mut Vec<u8>) -> bool
fn current(&self, key: &mut Vec<u8>, val: &mut Vec<u8>) -> bool
next()
).sourcefn seek(&mut self, key: &[u8])
fn seek(&mut self, key: &[u8])
key
or the next bigger key. If the seek is invalid (past last
element, or before first element), the iterator is reset()
and not valid. Read moresourcefn reset(&mut self)
fn reset(&mut self)
!valid()
, i.e. positioned before the first element.sourcefn valid(&self) -> bool
fn valid(&self) -> bool
current()
would succeed. Read moresourcefn prev(&mut self) -> bool
fn prev(&mut self) -> bool
prev()
returns false and it will be !valid()
. This is inefficient for most iterator
implementations. Read moresourcefn next(&mut self) -> Option<(Vec<u8>, Vec<u8>)>
fn next(&mut self) -> Option<(Vec<u8>, Vec<u8>)>
impl<T: LdbIterator> Iterator<Item=Vec<u8>> for T {}
. Read more