diff --git a/src/fenwicktree.rs b/src/fenwicktree.rs index cfcf32a..5fedc13 100644 --- a/src/fenwicktree.rs +++ b/src/fenwicktree.rs @@ -1,6 +1,8 @@ +use std::fmt::{Debug, Error, Formatter}; use std::ops::{Bound, RangeBounds}; // Reference: https://en.wikipedia.org/wiki/Fenwick_tree +#[derive(Clone)] pub struct FenwickTree { n: usize, ary: Vec, @@ -55,6 +57,20 @@ impl> FenwickTree { } } +impl> Debug for FenwickTree { + fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> { + f.debug_struct("FenwickTree") + .field("n", &self.n) + .field( + "accum", + &(1..=self.n).map(|i| self.accum(i)).collect::>(), + ) + .field("e", &self.e) + .finish()?; + Ok(()) + } +} + #[cfg(test)] mod tests { use super::*;