add stream impl

This commit is contained in:
Rex Magana 2025-01-22 11:26:08 -07:00
parent 195b1a593a
commit 269dec9380

View File

@ -317,6 +317,17 @@ where
} }
} }
impl<'ch, M, T, const N: usize> futures_util::Stream for Receiver<'ch, M, T, N>
where
M: RawMutex,
{
type Item = T;
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
self.channel.poll_receive(cx).map(Some)
}
}
/// Future returned by [`Channel::receive`] and [`Receiver::receive`]. /// Future returned by [`Channel::receive`] and [`Receiver::receive`].
#[must_use = "futures do nothing unless you `.await` or poll them"] #[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct ReceiveFuture<'ch, M, T, const N: usize> pub struct ReceiveFuture<'ch, M, T, const N: usize>
@ -768,6 +779,17 @@ where
} }
} }
impl<M, T, const N: usize> futures_util::Stream for Channel<M, T, N>
where
M: RawMutex,
{
type Item = T;
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
self.poll_receive(cx).map(Some)
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use core::time::Duration; use core::time::Duration;