fn print_node_details()

in merkledb/src/merkledb_debug.rs [12:52]


    fn print_node_details(&self, node: &MerkleNode) -> String {
        let attr = self.node_attributes(node.id()).unwrap_or_default();
        let mut ret = String::new();
        if attr.has_cas_data() {
            let cas_report = if let Ok(r) = find_ancestor_reconstructor(self, node, NodeDataType::CAS) {
                format!(
                    "\tSubstring [{}, {}) of CAS entry {}\n",
                    r.start,
                    r.end,
                    self.find_node_by_id(r.id).map_or("?".to_string(), |n| n.hash().to_string())
                )
            } else {
                "\tHas CAS data but unable to derive origin CAS node\n".to_string()
            };
            ret.push_str(&cas_report);
        }
        if attr.has_file_data() {
            let cas_report = if let Ok(r) = find_ancestor_reconstructor(self, node, NodeDataType::FILE) {
                format!(
                    "\tSubstring [{}, {}) of FILE entry {}\n",
                    r.start,
                    r.end,
                    self.find_node_by_id(r.id).map_or("?".to_string(), |n| n.hash().to_string())
                )
            } else {
                "\tHas FILE data but unable to derive origin FILE node\n".to_string()
            };
            ret.push_str(&cas_report);
        }
        ret.push('\n');
        if attr.has_file_data() {
            let recon_report = if let Ok(res) = self.reconstruct_from_cas(&[node.clone()]) {
                format!("CAS Reconstruction: {res:?}")
            } else {
                "\tUnable to reconstruct from CAS\n".to_string()
            };
            ret.push_str(&recon_report);
        }

        ret
    }