signals_kman/lib.rs
1#![feature(fn_traits, unboxed_closures, strict_provenance)]
2#![feature(core_intrinsics)]
3//! # Signal
4//! Is a simple signal to connect callbacks
5//!
6//! # AdvancedSignal
7//! When you connect a callback you can set a other value
8//! ## AdvanceSignal method is created with macro advanced_method.
9//! ```rust
10//!advanced_method!{
11//! fn method(|){
12//!
13//! }
14//!}
15//!```
16//! Function with state
17//!```rust
18//!use signals_kman::prelude::*;
19//!
20//!pub struct State {
21//! a: i32,
22//!}
23//!
24//!pub fn main() {
25//! let mut signal = AdvancedSignal::<i32, ()>::new();
26//!
27//! let state = State { a: 0 };
28//!
29//! signal.connect(&method, vec![Box::new(state)]);
30//!
31//! signal.call(1);
32//! signal.call(2);
33//! signal.call(1);
34//!}
35//!
36//!advanced_method! {
37//! pub fn method(a: i32|state: State){
38//! state.a += a;
39//!
40//! println!("A: {}", state.a);
41//! }
42//!}
43//!```
44
45pub mod signal;
46
47#[cfg_attr(feature = "advanced", macro_use)]
48#[cfg(feature = "advanced")]
49pub mod advanced_signal;
50#[cfg_attr(feature = "advanced", macro_use)]
51#[cfg(feature = "advanced")]
52pub mod get;
53
54pub mod prelude {
55 pub use crate::signal::Signal;
56
57 #[cfg(feature = "advanced")]
58 pub use {
59 crate::{advanced_method, advanced_signal::*, get::*, impl_get_ptr},
60 std::any::Any,
61 std::sync::{Arc, Mutex},
62 };
63}