sycamore_reactive/lib.rs
1//! Reactive primitives for [Sycamore](https://github.com/sycamore-rs/sycamore).
2//!
3//! ```rust
4//! use sycamore_reactive::*;
5//!
6//! create_root(|| {
7//! let greeting = create_signal("Hello");
8//! let name = create_signal("World");
9//!
10//! let display_text = create_memo(move || format!("{greeting} {name}!"));
11//! assert_eq!(display_text.get_clone(), "Hello World!");
12//!
13//! name.set("Sycamore");
14//! assert_eq!(display_text.get_clone(), "Hello Sycamore!");
15//! });
16//! ```
17//!
18//! # A note on `nightly`
19//!
20//! If you are using rust `nightly`, you can enable the `nightly` feature to enable the more terse
21//! syntax for signal get/set.
22//!
23//! ```ignore
24//! # use sycamore_reactive::*;
25//! # create_root(|| {
26//! let signal = create_signal(123);
27//!
28//! // Stable:
29//! let value = signal.get();
30//! signal.set(456);
31//!
32//! // Nightly:
33//! let value = signal();
34//! signal(456);
35//! # });
36//! ```
37//! Of course, the stable `.get()` also works on nightly as well if that's what you prefer.
38
39#![warn(missing_docs)]
40#![cfg_attr(feature = "nightly", feature(fn_traits, unboxed_closures))]
41
42mod context;
43mod effects;
44mod iter;
45mod maybe_dyn;
46mod memos;
47mod node;
48mod root;
49mod signals;
50mod utils;
51
52pub use context::*;
53pub use effects::*;
54pub use iter::*;
55pub use maybe_dyn::*;
56pub use memos::*;
57pub use node::*;
58pub use root::*;
59pub use signals::*;
60pub use utils::*;
61
62/// Add name for proc-macro purposes.
63extern crate self as sycamore_reactive;