5个版本
0.2.2 | 2024年7月2日 |
---|---|
0.2.1 | 2023年10月24日 |
0.2.0 | 2021年7月5日 |
0.1.1 | 2020年10月21日 |
0.1.0 | 2020年10月21日 |
#224 in 数据库实现
4,025 个月下载量
15KB
254 行
obkv
一个微型的键值存储,其中键始终为一个字节。它高度灵感来源于KVDS crate。
用法
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
代表优化字节的键和值存储。
此库的主要目的是能够存储键值条目,其中键可以用优化的字节数表示,这允许进行许多优化。
示例:创建一个obkv
并遍历条目
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?