diff options
Diffstat (limited to 'web/src')
-rw-r--r-- | web/src/hasher.rs | 21 | ||||
-rw-r--r-- | web/src/lib.rs | 4 | ||||
-rw-r--r-- | web/src/subscription.rs | 19 |
3 files changed, 44 insertions, 0 deletions
diff --git a/web/src/hasher.rs b/web/src/hasher.rs new file mode 100644 index 00000000..9ce2f7be --- /dev/null +++ b/web/src/hasher.rs @@ -0,0 +1,21 @@ +use std::collections::hash_map::DefaultHasher; + +/// The hasher used to compare layouts. +#[derive(Debug)] +pub struct Hasher(DefaultHasher); + +impl Default for Hasher { + fn default() -> Self { + Hasher(DefaultHasher::default()) + } +} + +impl core::hash::Hasher for Hasher { + fn write(&mut self, bytes: &[u8]) { + self.0.write(bytes) + } + + fn finish(&self) -> u64 { + self.0.finish() + } +} diff --git a/web/src/lib.rs b/web/src/lib.rs index 782bcf93..d4c422d2 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -61,18 +61,22 @@ use std::{cell::RefCell, rc::Rc}; mod bus; mod element; +mod hasher; pub mod style; +pub mod subscription; pub mod widget; pub use bus::Bus; pub use dodrio; pub use element::Element; +pub use hasher::Hasher; pub use iced_core::{ Align, Background, Color, Command, Font, HorizontalAlignment, Length, VerticalAlignment, }; pub use style::Style; +pub use subscription::Subscription; pub use widget::*; /// An interactive web application. diff --git a/web/src/subscription.rs b/web/src/subscription.rs new file mode 100644 index 00000000..4638c8ab --- /dev/null +++ b/web/src/subscription.rs @@ -0,0 +1,19 @@ +//! Listen to external events in your application. +use crate::Hasher; + +/// 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, (), T>; + +pub use iced_core::subscription::Recipe; |