Struct suzy::watch::WatchedEvent [−][src]
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]
T: 'static,
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]
T: 'static,
pub fn default() -> WatchedEvent<T>
[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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,