Struct suzy::watch::WatchedEvent[][src]

pub struct WatchedEvent<T> { /* fields omitted */ }

A WatchedEvent uses the watch system provided by this crate to implement an event disptacher. This is different from a watched value (Watched) in that events will fire for each value passed to WatchedEvent::dispatch() and will not “store” the data.

use drying_paint::*;

type EventCounter = Watcher<EventCounterData>;

#[derive(Default)]
struct EventCounterData {
    counter: u32,
    add: WatchedEvent<u32>,
}

impl WatcherInit for EventCounterData {
    fn init(watcher: &mut WatcherMeta<Self>) {
        watcher.watch(|root| {
            if let Some(amount) = root.add.bind() {
                root.counter += amount;
            }
        });
    }
}

fn main() {
    let mut ctx = WatchContext::new();
    ctx.with(|| {
        let item = WatchContext::allow_watcher_access((), |()| {
            let mut item = EventCounter::new();
            item.data_mut().add.dispatch(7);
            item
        });
        WatchContext::update_current();
        let item = WatchContext::allow_watcher_access(item, |mut item| {
            assert_eq!(item.data().counter, 7);
            item.data_mut().add.dispatch(9);
            item.data_mut().add.dispatch(3);
            item
        });
        WatchContext::update_current();
        WatchContext::allow_watcher_access(item, |mut item| {
            assert_eq!(item.data().counter, 19);
        });
    });
}

Implementations

impl<T> WatchedEvent<T> where
    T: 'static, 
[src]

pub fn new() -> WatchedEvent<T>[src]

Create a new WatchedEvent

pub fn bind(&self) -> Option<&T>[src]

Used inside a watch closure this will return a value each time the event is dispatched

pub fn dispatch(&mut self, arg: T)[src]

Trigger the event. The argument passed will be delivered to listeners.

Trait Implementations

impl<T> Default for WatchedEvent<T> where
    T: 'static, 
[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for WatchedEvent<T>

impl<T> !Send for WatchedEvent<T>

impl<T> !Sync for WatchedEvent<T>

impl<T> Unpin for WatchedEvent<T>

impl<T> !UnwindSafe for WatchedEvent<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.