1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//! Observables in rust
//! ## Example
//! ```
//!
//! ```

/// Public API.
mod observable;

// Reexport of the public API.
#[doc(inline)]
pub use crate::observable::*;

use std::cell::Ref;
pub trait Set<T>: Sized {
    fn set(&self, value: T);
}
pub trait Observe<T>: Sized {
    fn get(&self) -> Ref<T>;
    fn subscribe(&self, cb: Box<dyn Fn()>) -> ListenerHandle;
    fn once(&self, cb: Box<dyn Fn()>) -> ListenerHandle;
    fn unsubscribe(&self, handle: ListenerHandle) -> bool;
}