summaryrefslogtreecommitdiffstats
path: root/native/src
diff options
context:
space:
mode:
Diffstat (limited to 'native/src')
-rw-r--r--native/src/subscription.rs31
-rw-r--r--native/src/subscription/events.rs23
2 files changed, 31 insertions, 23 deletions
diff --git a/native/src/subscription.rs b/native/src/subscription.rs
index c25e1cb4..c49e24d2 100644
--- a/native/src/subscription.rs
+++ b/native/src/subscription.rs
@@ -1,31 +1,16 @@
use crate::{Event, Hasher};
+use futures::stream::BoxStream;
-pub type Subscription<T> = iced_core::Subscription<Hasher, Input, T>;
-pub type Input = futures::channel::mpsc::Receiver<Event>;
+pub type EventStream = BoxStream<'static, Event>;
-pub use iced_core::subscription::Recipe;
-
-pub fn events() -> Subscription<Event> {
- Subscription::from_recipe(Events)
-}
+pub type Subscription<T> = iced_core::Subscription<Hasher, EventStream, T>;
-struct Events;
-
-impl Recipe<Hasher, Input> for Events {
- type Output = Event;
-
- fn hash(&self, state: &mut Hasher) {
- use std::hash::Hash;
+pub use iced_core::subscription::Recipe;
- std::any::TypeId::of::<Self>().hash(state);
- }
+mod events;
- fn stream(
- self: Box<Self>,
- input: Input,
- ) -> futures::stream::BoxStream<'static, Self::Output> {
- use futures::StreamExt;
+use events::Events;
- input.boxed()
- }
+pub fn events() -> Subscription<Event> {
+ Subscription::from_recipe(Events)
}
diff --git a/native/src/subscription/events.rs b/native/src/subscription/events.rs
new file mode 100644
index 00000000..b7301828
--- /dev/null
+++ b/native/src/subscription/events.rs
@@ -0,0 +1,23 @@
+use crate::{
+ subscription::{EventStream, Recipe},
+ Event, Hasher,
+};
+
+pub struct Events;
+
+impl Recipe<Hasher, EventStream> for Events {
+ type Output = Event;
+
+ fn hash(&self, state: &mut Hasher) {
+ use std::hash::Hash;
+
+ std::any::TypeId::of::<Self>().hash(state);
+ }
+
+ fn stream(
+ self: Box<Self>,
+ event_stream: EventStream,
+ ) -> futures::stream::BoxStream<'static, Self::Output> {
+ event_stream
+ }
+}