Merge pull request #2689 from embassy-rs/dyn-channel-futures

Add conversion into dyn variants for channel futures
This commit is contained in:
Ulf Lilleengen 2024-03-12 15:50:02 +00:00 committed by GitHub
commit 7c82583d56
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -263,6 +263,12 @@ impl<'ch, T> Future for DynamicReceiveFuture<'ch, T> {
}
}
impl<'ch, M: RawMutex, T, const N: usize> From<ReceiveFuture<'ch, M, T, N>> for DynamicReceiveFuture<'ch, T> {
fn from(value: ReceiveFuture<'ch, M, T, N>) -> Self {
Self { channel: value.channel }
}
}
/// Future returned by [`Channel::send`] and [`Sender::send`].
#[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct SendFuture<'ch, M, T, const N: usize>
@ -321,6 +327,15 @@ impl<'ch, T> Future for DynamicSendFuture<'ch, T> {
impl<'ch, T> Unpin for DynamicSendFuture<'ch, T> {}
impl<'ch, M: RawMutex, T, const N: usize> From<SendFuture<'ch, M, T, N>> for DynamicSendFuture<'ch, T> {
fn from(value: SendFuture<'ch, M, T, N>) -> Self {
Self {
channel: value.channel,
message: value.message,
}
}
}
pub(crate) trait DynamicChannel<T> {
fn try_send_with_context(&self, message: T, cx: Option<&mut Context<'_>>) -> Result<(), TrySendError<T>>;