From 7be4337de96de9948632bdc2fc5067d0c4a76b33 Mon Sep 17 00:00:00 2001 From: Grant Miller Date: Fri, 24 Feb 2023 13:01:41 -0600 Subject: Add `#[must_use]` to all futures --- embassy-time/src/timer.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'embassy-time/src/timer.rs') diff --git a/embassy-time/src/timer.rs b/embassy-time/src/timer.rs index bd791b817..f74b5cb24 100644 --- a/embassy-time/src/timer.rs +++ b/embassy-time/src/timer.rs @@ -26,6 +26,7 @@ pub async fn with_timeout(timeout: Duration, fut: F) -> Result Date: Tue, 28 Feb 2023 17:04:56 +0100 Subject: embassy-time: add async tick() method to Ticker --- embassy-time/src/timer.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'embassy-time/src/timer.rs') diff --git a/embassy-time/src/timer.rs b/embassy-time/src/timer.rs index f74b5cb24..416830a7c 100644 --- a/embassy-time/src/timer.rs +++ b/embassy-time/src/timer.rs @@ -3,7 +3,7 @@ use core::pin::Pin; use core::task::{Context, Poll, Waker}; use futures_util::future::{select, Either}; -use futures_util::{pin_mut, Stream}; +use futures_util::{pin_mut, Stream, StreamExt}; use crate::{Duration, Instant}; @@ -132,6 +132,11 @@ impl Ticker { let expires_at = Instant::now() + duration; Self { expires_at, duration } } + + /// Waits for the next tick + pub async fn next(&mut self) { + ::next(self).await; + } } impl Unpin for Ticker {} -- cgit From c88bbaa5ecc340e14fd540e3025a8635456e5405 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Sun, 5 Mar 2023 23:13:22 +0100 Subject: time/ticker: make sure the future for .next() is Unpin. --- embassy-time/src/timer.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'embassy-time/src/timer.rs') diff --git a/embassy-time/src/timer.rs b/embassy-time/src/timer.rs index 416830a7c..52620d233 100644 --- a/embassy-time/src/timer.rs +++ b/embassy-time/src/timer.rs @@ -1,9 +1,9 @@ -use core::future::Future; +use core::future::{poll_fn, Future}; use core::pin::Pin; use core::task::{Context, Poll, Waker}; use futures_util::future::{select, Either}; -use futures_util::{pin_mut, Stream, StreamExt}; +use futures_util::{pin_mut, Stream}; use crate::{Duration, Instant}; @@ -134,8 +134,17 @@ impl Ticker { } /// Waits for the next tick - pub async fn next(&mut self) { - ::next(self).await; + pub fn next(&mut self) -> impl Future + '_ { + poll_fn(|cx| { + if self.expires_at <= Instant::now() { + let dur = self.duration; + self.expires_at += dur; + Poll::Ready(()) + } else { + schedule_wake(self.expires_at, cx.waker()); + Poll::Pending + } + }) } } -- cgit From 46961cfdf72a3b5d54b241a41d9f2496c6dc6229 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Mon, 29 May 2023 19:46:28 +0200 Subject: Fix tests. --- embassy-time/src/timer.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'embassy-time/src/timer.rs') diff --git a/embassy-time/src/timer.rs b/embassy-time/src/timer.rs index 52620d233..d3d1f9f5f 100644 --- a/embassy-time/src/timer.rs +++ b/embassy-time/src/timer.rs @@ -109,7 +109,6 @@ impl Future for Timer { /// # #![feature(type_alias_impl_trait)] /// # /// use embassy_time::{Duration, Ticker}; -/// use futures::StreamExt; /// # fn foo(){} /// /// #[embassy_executor::task] -- cgit