summaryrefslogtreecommitdiffstats
path: root/native/src/subscription.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/subscription.rs')
-rw-r--r--native/src/subscription.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/native/src/subscription.rs b/native/src/subscription.rs
new file mode 100644
index 00000000..db88867a
--- /dev/null
+++ b/native/src/subscription.rs
@@ -0,0 +1,42 @@
+//! Listen to external events in your application.
+use crate::{Event, Hasher};
+use futures::stream::BoxStream;
+
+/// A request to listen to external events.
+///
+/// Besides performing async actions on demand with [`Command`], most
+/// applications also need to listen to external events passively.
+///
+/// A [`Subscription`] is normally provided to some runtime, like a [`Command`],
+/// and it will generate events as long as the user keeps requesting it.
+///
+/// For instance, you can use a [`Subscription`] to listen to a WebSocket
+/// connection, keyboard presses, mouse events, time ticks, etc.
+///
+/// [`Command`]: ../struct.Command.html
+/// [`Subscription`]: struct.Subscription.html
+pub type Subscription<T> = iced_core::Subscription<Hasher, EventStream, T>;
+
+/// A stream of runtime events.
+///
+/// It is the input of a [`Subscription`] in the native runtime.
+///
+/// [`Subscription`]: type.Subscription.html
+pub type EventStream = BoxStream<'static, Event>;
+
+pub use iced_core::subscription::Recipe;
+
+mod events;
+
+use events::Events;
+
+/// Returns a [`Subscription`] to all the runtime events.
+///
+/// This subscription will notify your application of any [`Event`] handled by
+/// the runtime.
+///
+/// [`Subscription`]: type.Subscription.html
+/// [`Event`]: ../enum.Event.html
+pub fn events() -> Subscription<Event> {
+ Subscription::from_recipe(Events)
+}