[−][src]Module exonum_rocksdb::merge_operator
rustic merge operator
ⓘThis example is not tested
extern crate tempdir; extern crate exonum_rocksdb; use exonum_rocksdb::{Options, DB, MergeOperands}; use tempdir::TempDir; fn concat_merge(_: &[u8], existing_val: Option<&[u8]>, operands: &mut MergeOperands) -> Vec<u8> { let mut result: Vec<u8> = Vec::with_capacity(operands.size_hint().0); existing_val.map(|v| { for e in v { result.push(*e) } }); for op in operands { for e in op { result.push(*e) } } result } fn main() { let temp_dir = TempDir::new("rocksdb").unwrap(); let path = temp_dir.path(); let mut opts = Options::default(); opts.create_if_missing(true); opts.set_merge_operator("test operator", concat_merge); let db = DB::open(&opts, path).unwrap(); let _ = db.put(b"k1", b"a"); let _ = db.merge(b"k1", b"b"); let _ = db.merge(b"k1", b"c"); let _ = db.merge(b"k1", b"d"); let _ = db.merge(b"k1", b"efg"); let r = db.get(b"k1"); assert!(r.unwrap().unwrap().to_utf8().unwrap() == "abcdefg"); }
Structs
MergeOperands | |
MergeOperatorCallback |
Functions
destructor_callback⚠ | |
full_merge_callback⚠ | |
name_callback⚠ | |
partial_merge_callback⚠ |
Type Definitions
MergeFn |