From b7fbf6d519fd2c07ec4b203351b15500cdc9e6dc Mon Sep 17 00:00:00 2001 From: wackazong Date: Tue, 4 Feb 2025 11:03:17 +0100 Subject: [PATCH 1/2] Add saturating_add and saturating_sub to Instant --- embassy-time/src/instant.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/embassy-time/src/instant.rs b/embassy-time/src/instant.rs index cae80e51f..e1417174c 100644 --- a/embassy-time/src/instant.rs +++ b/embassy-time/src/instant.rs @@ -115,6 +115,16 @@ impl Instant { pub fn checked_sub(&self, duration: Duration) -> Option { self.ticks.checked_sub(duration.ticks).map(|ticks| Instant { ticks }) } + + /// Adds a Duration to self. In case of overflow, the maximum value is returned. + pub fn saturating_add(&mut self, duration: Duration) { + self.ticks = self.ticks.saturating_add(duration.ticks); + } + + /// Subtracts a Duration from self. In case of overflow, the minimum value is returned. + pub fn saturating_sub(&mut self, duration: Duration) { + self.ticks = self.ticks.saturating_sub(duration.ticks); + } } impl Add for Instant { From 865266a4ae0a1e12174fbe0de0956e0a94f32800 Mon Sep 17 00:00:00 2001 From: wackazong Date: Tue, 4 Feb 2025 11:09:52 +0100 Subject: [PATCH 2/2] Take self instead of &mut self This is more idiomatic since methods with these names usually take self and not &mut self. --- embassy-time/src/instant.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/embassy-time/src/instant.rs b/embassy-time/src/instant.rs index e1417174c..7fc93c2ec 100644 --- a/embassy-time/src/instant.rs +++ b/embassy-time/src/instant.rs @@ -117,13 +117,15 @@ impl Instant { } /// Adds a Duration to self. In case of overflow, the maximum value is returned. - pub fn saturating_add(&mut self, duration: Duration) { + pub fn saturating_add(mut self, duration: Duration) -> Self { self.ticks = self.ticks.saturating_add(duration.ticks); + self } /// Subtracts a Duration from self. In case of overflow, the minimum value is returned. - pub fn saturating_sub(&mut self, duration: Duration) { + pub fn saturating_sub(mut self, duration: Duration) -> Self { self.ticks = self.ticks.saturating_sub(duration.ticks); + self } }