debug_fmt.rs
1 use std::fmt; 2 3 use crate::ConsensusItem; 4 5 /// A newtype for a nice [`fmt::Debug`] of a [`ConsensusItem`] 6 pub struct FmtDbgConsensusItem<'ci>(pub &'ci ConsensusItem); 7 8 impl<'ci> fmt::Debug for FmtDbgConsensusItem<'ci> { 9 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 10 match self.0 { 11 ConsensusItem::Module(mci) => { 12 f.write_fmt(format_args!( 13 "Module CI: module={} ci={}", 14 mci.module_instance_id(), 15 mci 16 ))?; 17 } 18 ConsensusItem::Transaction(tx) => { 19 f.write_fmt(format_args!( 20 "Transaction txid={}, inputs_num={}, outputs_num={}", 21 tx.tx_hash(), 22 tx.inputs.len(), 23 tx.outputs.len(), 24 ))?; 25 // TODO: This is kind of lengthy, and maybe could be conditionally enabled 26 // via an env var or something. 27 for input in tx.inputs.iter() { 28 // TODO: add pretty print fn to interface 29 f.write_fmt(format_args!("\n Input: {input}"))?; 30 } 31 for output in tx.outputs.iter() { 32 f.write_fmt(format_args!("\n Output: {output}")).unwrap(); 33 } 34 } 35 ConsensusItem::Default { variant, .. } => { 36 f.write_fmt(format_args!("Unknown CI variant: {variant}"))?; 37 } 38 } 39 Ok(()) 40 } 41 }