diff --git a/embassy-time/src/instant.rs b/embassy-time/src/instant.rs index cae80e51f..7fc93c2ec 100644 --- a/embassy-time/src/instant.rs +++ b/embassy-time/src/instant.rs @@ -115,6 +115,18 @@ 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 { + 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) -> Self { + self.ticks = self.ticks.saturating_sub(duration.ticks); + self + } } impl Add for Instant {