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}