Introduce MaybeSend trait in iced_futures
It allows to clean up all the `trait_aliases` modules!
This commit is contained in:
parent
83c649b574
commit
5dab5a327e
6 changed files with 49 additions and 150 deletions
|
|
@ -1,52 +1,8 @@
|
|||
use crate::{BoxFuture, Subscription};
|
||||
use crate::{BoxFuture, MaybeSend, Subscription};
|
||||
|
||||
use futures::{channel::mpsc, sink::Sink};
|
||||
use std::{collections::HashMap, marker::PhantomData};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
mod trait_aliases {
|
||||
use super::*;
|
||||
|
||||
pub trait TrackerMessage: Send + 'static {}
|
||||
|
||||
impl<T> TrackerMessage for T where T: Send + 'static {}
|
||||
|
||||
pub trait TrackerMessageReceiver<Message: TrackerMessage>:
|
||||
Sink<Message, Error = mpsc::SendError> + Unpin + Send + Clone + 'static
|
||||
{
|
||||
}
|
||||
|
||||
impl<Message: TrackerMessage, T> TrackerMessageReceiver<Message> for T where
|
||||
T: Sink<Message, Error = mpsc::SendError>
|
||||
+ Unpin
|
||||
+ Send
|
||||
+ Clone
|
||||
+ 'static
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
mod trait_aliases {
|
||||
use super::*;
|
||||
|
||||
pub trait TrackerMessage: 'static {}
|
||||
|
||||
impl<T> TrackerMessage for T where T: 'static {}
|
||||
|
||||
pub trait TrackerMessageReceiver<Message: TrackerMessage>:
|
||||
Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
|
||||
{
|
||||
}
|
||||
|
||||
impl<Message: TrackerMessage, T> TrackerMessageReceiver<Message> for T where
|
||||
T: Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
pub use trait_aliases::{TrackerMessage, TrackerMessageReceiver};
|
||||
|
||||
/// A registry of subscription streams.
|
||||
///
|
||||
/// If you have an application that continuously returns a [`Subscription`],
|
||||
|
|
@ -101,8 +57,12 @@ where
|
|||
receiver: Receiver,
|
||||
) -> Vec<BoxFuture<()>>
|
||||
where
|
||||
Message: TrackerMessage,
|
||||
Receiver: TrackerMessageReceiver<Message>,
|
||||
Message: 'static + MaybeSend,
|
||||
Receiver: 'static
|
||||
+ Sink<Message, Error = mpsc::SendError>
|
||||
+ Unpin
|
||||
+ MaybeSend
|
||||
+ Clone,
|
||||
{
|
||||
use futures::{future::FutureExt, stream::StreamExt};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue