[−][src]Module rocksdb::merge_operator
rustic merge operator
use rocksdb::{Options, DB, MergeOperands}; fn concat_merge(new_key: &[u8], existing_val: Option<&[u8]>, operands: &mut MergeOperands) -> Option<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) } } Some(result) } fn main() { let path = "_rust_path_to_rocksdb"; let mut opts = Options::default(); opts.create_if_missing(true); opts.set_merge_operator("test operator", concat_merge, None); { let db = DB::open(&opts, path).unwrap(); let p = db.put(b"k1", b"a"); db.merge(b"k1", b"b"); db.merge(b"k1", b"c"); db.merge(b"k1", b"d"); db.merge(b"k1", b"efg"); let r = db.get(b"k1"); assert!(r.unwrap().unwrap().to_utf8().unwrap() == "abcdefg"); } let _ = DB::destroy(&opts, path); }
Structs
| MergeOperands | |
| MergeOperatorCallback |
Functions
| destructor_callback⚠ | |
| full_merge_callback⚠ | |
| name_callback⚠ | |
| partial_merge_callback⚠ |
Type Definitions
| MergeFn |