fn build_cas_nodes()

in merkledb/src/merkledb_highlevel_v1.rs [42:68]


    fn build_cas_nodes(&mut self, db: &mut (impl MerkleDBBase + ?Sized), flush: bool) {
        if self.nodes_without_cas_entry_length >= self.cas_block_size {
            let mut running_sum: usize = 0;
            let mut start = 0;
            for i in 0..self.nodes_without_cas_entry.len() {
                running_sum += self.nodes_without_cas_entry[i].len();
                if running_sum >= self.cas_block_size {
                    let end = i + 1;
                    let cas_root = merge(db, self.nodes_without_cas_entry[start..end].to_vec(), false, true);
                    self.cas_roots.push(cas_root);

                    for j in start..end {
                        self.ids_in_nodes_without_cas_entry
                            .remove(&self.nodes_without_cas_entry[j].id());
                    }
                    self.nodes_without_cas_entry_length -= running_sum;
                    start = end;
                    running_sum = 0;
                }
            }
            self.nodes_without_cas_entry = self.nodes_without_cas_entry[start..].to_vec();
        }
        if flush && !self.nodes_without_cas_entry.is_empty() {
            let cas_root = merge(db, std::mem::take(&mut self.nodes_without_cas_entry), false, true);
            self.cas_roots.push(cas_root);
        }
    }