Fix missing Subscription type in iced_web

This commit is contained in:
Héctor Ramón Jiménez 2019-12-18 23:57:02 +01:00
parent 0f2e20f5e5
commit 9ca65c9f18
5 changed files with 47 additions and 3 deletions

View File

@ -146,12 +146,12 @@ pub trait Application: Sized {
/// It should probably be that last thing you call in your `main` function.
///
/// [`Application`]: trait.Application.html
fn run(settings: Settings)
fn run(_settings: Settings)
where
Self: 'static,
{
#[cfg(not(target_arch = "wasm32"))]
<Instance<Self> as iced_winit::Application>::run(settings.into());
<Instance<Self> as iced_winit::Application>::run(_settings.into());
#[cfg(target_arch = "wasm32")]
<Instance<Self> as iced_web::Application>::run();

View File

@ -15,7 +15,7 @@ categories = ["web-programming"]
maintenance = { status = "actively-developed" }
[dependencies]
iced_core = { version = "0.1.0", path = "../core", features = ["command"] }
iced_core = { version = "0.1.0", path = "../core", features = ["command", "subscription"] }
dodrio = "0.1.0"
wasm-bindgen = "0.2.51"
wasm-bindgen-futures = "0.4"

21
web/src/hasher.rs Normal file
View File

@ -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()
}
}

View File

@ -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.

19
web/src/subscription.rs Normal file
View File

@ -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;