hirola_core/
lib.rs

1//! # hirola-core
2//!
3//! ## Example
4//! ```rust,no_run
5//! use hirola::prelude::*;
6//! use hirola::signal::Mutable;
7//! use hirola::dom::*;
8//!
9//! fn counter() -> Dom {
10//!     let count = Mutable::new(0i32);
11//!     let decrement = count.callback(|s| *s.lock_mut() -= 1);
12//!     let increment = count.callback(|s| *s.lock_mut() += 1);
13//!     html! {
14//!          <>
15//!             <button on:click=decrement>"-"</button>
16//!             <span>{count}</span>
17//!             <button on:click=increment>"+"</button>
18//!          </>
19//!     }
20//! }
21//!
22//! ```
23
24#![allow(non_snake_case)]
25#![warn(clippy::clone_on_ref_ptr)]
26#![warn(clippy::rc_buffer)]
27#![deny(clippy::trait_duplication_in_bounds)]
28#![deny(clippy::type_repetition_in_bounds)]
29use std::{future::Future, pin::Pin};
30pub type BoxedLocal<T> = Pin<Box<dyn Future<Output = T> + 'static>>;
31
32pub mod callback;
33pub mod effect;
34pub mod generic_node;
35pub mod render;
36pub mod templating;
37
38pub mod prelude {
39    pub use crate::callback::Callback;
40    pub use crate::effect::*;
41    pub use crate::generic_node::EventListener;
42    pub use crate::generic_node::GenericNode;
43    pub use crate::generic_node::*;
44    pub use crate::render::*;
45    pub use crate::templating::flow::{Indexed, IndexedProps};
46    pub use crate::templating::suspense::{Suspend, Suspense, SuspenseResult::*};
47    pub use crate::templating::switch::Switch;
48    pub use crate::BoxedLocal;
49    pub use futures_signals::signal::Mutable;
50    pub use futures_signals::signal_map::MutableBTreeMap;
51    pub use futures_signals::signal_vec::MutableVec;
52    pub use futures_signals::*;
53}