aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-time/src/duration.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/embassy-time/src/duration.rs b/embassy-time/src/duration.rs
index 9d0bab2dd..8366455be 100644
--- a/embassy-time/src/duration.rs
+++ b/embassy-time/src/duration.rs
@@ -192,3 +192,19 @@ impl<'a> fmt::Display for Duration {
192const fn div_ceil(num: u64, den: u64) -> u64 { 192const fn div_ceil(num: u64, den: u64) -> u64 {
193 (num + den - 1) / den 193 (num + den - 1) / den
194} 194}
195
196impl TryFrom<core::time::Duration> for Duration {
197 type Error = <u64 as TryFrom<u128>>::Error;
198
199 /// Converts using [`Duration::from_micros`]. Fails if value can not be represented as u64.
200 fn try_from(value: core::time::Duration) -> Result<Self, Self::Error> {
201 Ok(Self::from_micros(value.as_micros().try_into()?))
202 }
203}
204
205impl From<Duration> for core::time::Duration {
206 /// Converts using [`Duration::as_micros`].
207 fn from(value: Duration) -> Self {
208 core::time::Duration::from_micros(value.as_micros())
209 }
210}