From 045b1878db77e7699e5145a18e04503c836137a3 Mon Sep 17 00:00:00 2001 From: NotLeonian <75620009+NotLeonian@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:08:56 +0900 Subject: [PATCH 1/2] Implement Clone and Debug for FenwickTree --- src/fenwicktree.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/fenwicktree.rs b/src/fenwicktree.rs index cfcf32a..9a48f72 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,22 @@ 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::*; From cd73cecad3444330dcb82e2f5baf589cea0f1fbb Mon Sep 17 00:00:00 2001 From: NotLeonian <75620009+NotLeonian@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:26:20 +0900 Subject: [PATCH 2/2] Fix formatting to match rustfmt --- src/fenwicktree.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/fenwicktree.rs b/src/fenwicktree.rs index 9a48f72..5fedc13 100644 --- a/src/fenwicktree.rs +++ b/src/fenwicktree.rs @@ -63,9 +63,7 @@ impl> Debug for FenwickTree { .field("n", &self.n) .field( "accum", - &(1..=self.n) - .map(|i| self.accum(i)) - .collect::>(), + &(1..=self.n).map(|i| self.accum(i)).collect::>(), ) .field("e", &self.e) .finish()?;