From 25d4070d3bc0eb738eaebeedb6ec11af9686026d Mon Sep 17 00:00:00 2001 From: Avinash Sajjanshetty Date: Sun, 14 Sep 2025 23:05:52 +0530 Subject: [PATCH] avoid unnecessary cloning when formatting Txn for Display --- core/mvcc/database/mod.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/core/mvcc/database/mod.rs b/core/mvcc/database/mod.rs index 08548a94b..15b688208 100644 --- a/core/mvcc/database/mod.rs +++ b/core/mvcc/database/mod.rs @@ -141,20 +141,28 @@ impl std::fmt::Display for Transaction { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { write!( f, - "{{ state: {}, id: {}, begin_ts: {}, write_set: {:?}, read_set: {:?}", + "{{ state: {}, id: {}, begin_ts: {}, write_set: [", self.state.load(), self.tx_id, self.begin_ts, - // FIXME: I'm sorry, we obviously shouldn't be cloning here. - self.write_set - .iter() - .map(|v| *v.value()) - .collect::>(), - self.read_set - .iter() - .map(|v| *v.value()) - .collect::>() - ) + )?; + + for (i, v) in self.write_set.iter().enumerate() { + if i > 0 { + write!(f, ", ")? + } + write!(f, "{:?}", *v.value())?; + } + + write!(f, "], read_set: [")?; + for (i, v) in self.read_set.iter().enumerate() { + if i > 0 { + write!(f, ", ")?; + } + write!(f, "{:?}", *v.value())?; + } + + write!(f, "] }}") } }