From 3162d550fdf54c9925f2b50de66a216e66387485 Mon Sep 17 00:00:00 2001 From: Kevin Zimmerman <4733573+kczimm@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:54:48 -0500 Subject: [PATCH] simplify format_duration, reduce String allocs --- src/lib.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6a8a1e3..358cf14 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,18 +25,11 @@ pub mod tls; /// /// * `duration` - A duration of time pub fn format_duration(duration: &chrono::Duration) -> String { - let milliseconds = format!("{:0>3}", duration.num_milliseconds() % 1000); + let milliseconds = duration.num_milliseconds() % 1000; + let seconds = duration.num_seconds() % 60; + let minutes = duration.num_minutes() % 60; + let hours = duration.num_hours() % 24; + let days = duration.num_days(); - let seconds = format!("{:0>2}", duration.num_seconds() % 60); - - let minutes = format!("{:0>2}", duration.num_minutes() % 60); - - let hours = format!("{:0>2}", duration.num_hours() % 24); - - let days = duration.num_days().to_string(); - - format!( - "{}d {}:{}:{}.{}", - days, hours, minutes, seconds, milliseconds - ) + format!("{days}d {hours:0>2}:{minutes:0>2}:{seconds:0>2}.{milliseconds:0>3}") }