[thin_check (rust)] BTree values must now implement Copy

This commit is contained in:
Joe Thornber
2020-09-18 10:06:33 +01:00
parent bcfb9a73a1
commit bc058f8baf
4 changed files with 31 additions and 33 deletions

View File

@@ -313,7 +313,7 @@ pub type Result<T> = std::result::Result<T, BTreeError>;
//------------------------------------------
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Copy)]
pub struct NodeHeader {
pub block: u64,
pub is_leaf: bool,
@@ -824,7 +824,8 @@ impl<V> ValueCollector<V> {
}
}
impl<V: Unpack + Clone> NodeVisitor<V> for ValueCollector<V> {
// FIXME: should we be using Copy rather than clone? (Yes)
impl<V: Unpack + Copy> NodeVisitor<V> for ValueCollector<V> {
fn visit(&self, _kr: &KeyRange, _h: &NodeHeader, keys: &[u64], values: &[V]) -> Result<()> {
let mut vals = self.values.lock().unwrap();
for n in 0..keys.len() {
@@ -835,7 +836,7 @@ impl<V: Unpack + Clone> NodeVisitor<V> for ValueCollector<V> {
}
}
pub fn btree_to_map<V: Unpack + Clone>(
pub fn btree_to_map<V: Unpack + Copy>(
engine: Arc<dyn IoEngine + Send + Sync>,
ignore_non_fatal: bool,
root: u64,
@@ -846,7 +847,7 @@ pub fn btree_to_map<V: Unpack + Clone>(
Ok(visitor.values.into_inner().unwrap())
}
pub fn btree_to_map_with_sm<V: Unpack + Clone>(
pub fn btree_to_map_with_sm<V: Unpack + Copy>(
engine: Arc<dyn IoEngine + Send + Sync>,
sm: Arc<Mutex<dyn SpaceMap + Send + Sync>>,
ignore_non_fatal: bool,
@@ -860,3 +861,23 @@ pub fn btree_to_map_with_sm<V: Unpack + Clone>(
}
//------------------------------------------
/*
struct ValuePathCollector<V> {
values: Mutex<BTreeMap<u64, (Vec<u64>, V)>>
}
impl<V> ValuePathCollector<V> {
fn new() -> ValuePathCollector<V> {
ValuePathCollector {
values: Mutex::new(BTreeMap::new()),
}
}
}
impl<V: Unpack + Clone> NodeVisitor<V> for ValueCollector<V> {
}
*/
//------------------------------------------

View File

@@ -49,7 +49,7 @@ impl Unpack for SMRoot {
//------------------------------------------
#[derive(Clone, Debug)]
#[derive(Clone, Copy, Debug)]
pub struct IndexEntry {
pub blocknr: u64,
pub nr_free: u32,