5 releases
0.2.2 | Jul 2, 2024 |
---|---|
0.2.1 | Oct 24, 2023 |
0.2.0 | Jul 5, 2021 |
0.1.1 | Oct 21, 2020 |
0.1.0 | Oct 21, 2020 |
#228 in Database implementations
4,897 downloads per month
15KB
254 lines
obkv
A micro key-value store where the key is always one byte. It is highly inspired by the KVDS crate.
Usage
let mut writer = KvWriter::memory();
writer.insert(0, b"hello").unwrap();
writer.insert(1, b"blue").unwrap();
writer.insert(255, b"world").unwrap();
let obkv = writer.into_inner().unwrap();
let reader = KvReader::new(&obkv);
assert_eq!(reader.get(0), Some(&b"hello"[..]));
assert_eq!(reader.get(1), Some(&b"blue"[..]));
assert_eq!(reader.get(10), None);
assert_eq!(reader.get(255), Some(&b"world"[..]));
lib.rs
:
obkv
stands for optimized-bytes key and a value store.
The main purpose of this library is to be able to store key value entries where the key can be represented by an optimized amount of bytes, this allows a lot of optimizations.
Example: Creating an obkv
and iterating over the entries
use obkv::{KvWriterU16, KvReaderU16};
let mut writer = KvWriterU16::memory();
writer.insert(0, b"hello").unwrap();
writer.insert(1, b"blue").unwrap();
writer.insert(255, b"world").unwrap();
let obkv = writer.into_inner().unwrap();
let mut iter = KvReaderU16::new(&obkv).iter();
assert_eq!(iter.next(), Some((0, &b"hello"[..])));
assert_eq!(iter.next(), Some((1, &b"blue"[..])));
assert_eq!(iter.next(), Some((255, &b"world"[..])));
assert_eq!(iter.next(), None);
assert_eq!(iter.next(), None); // is it fused?