in common/rusty_leveldb_sgx/src/version_set.rs [815:846]
fn save_to(&mut self, cmp: &InternalKeyCmp, base: &Shared<Version>, v: &mut Version) {
for level in 0..NUM_LEVELS {
sort_files_by_smallest(cmp, &mut self.added[level]);
// The base version should already have sorted files.
sort_files_by_smallest(cmp, &mut base.borrow_mut().files[level]);
let added = self.added[level].clone();
let basefiles = base.borrow().files[level].clone();
v.files[level].reserve(basefiles.len() + self.added[level].len());
let iadded = added.into_iter();
let ibasefiles = basefiles.into_iter();
let merged = merge_iters(iadded, ibasefiles, |a, b| {
cmp.cmp(&a.borrow().smallest, &b.borrow().smallest)
});
for m in merged {
self.maybe_add_file(cmp, v, level, m);
}
// Make sure that there is no overlap in higher levels.
if level == 0 {
continue;
}
for i in 1..v.files[level].len() {
let (prev_end, this_begin) = (
&v.files[level][i - 1].borrow().largest,
&v.files[level][i].borrow().smallest,
);
assert!(cmp.cmp(prev_end, this_begin) < Ordering::Equal);
}
}
}