pub struct Observer { /* private fields */ }Expand description
Runs a closure while recording which reactive values it reads, and calls
on_invalidate (once per run) when any of them changes.
Implementations§
Source§impl Observer
impl Observer
Sourcepub fn new(on_invalidate: impl Fn() + 'static) -> Self
pub fn new(on_invalidate: impl Fn() + 'static) -> Self
Creates a dirty observer that calls on_invalidate when a tracked dependency changes.
use std::cell::Cell;
use std::rc::Rc;
use ravenrs_reactive::{Observer, State};
let name = State::new("Ada".to_string());
let hits = Rc::new(Cell::new(0));
let h = hits.clone();
let observer = Observer::new(move || h.set(h.get() + 1));
observer.track(|| name.get());
name.set("Grace".to_string());
assert_eq!(hits.get(), 1);
assert!(observer.is_dirty());Sourcepub fn track<R>(&self, f: impl FnOnce() -> R) -> R
pub fn track<R>(&self, f: impl FnOnce() -> R) -> R
Runs f, replacing the previous dependency set with what f reads.
Sourcepub fn untracked<R>(f: impl FnOnce() -> R) -> R
pub fn untracked<R>(f: impl FnOnce() -> R) -> R
Runs f without recording dependencies for any observer.
Sourcepub fn invalidate(&self)
pub fn invalidate(&self)
Marks the observer dirty and fires its callback, as if a dependency changed.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Observer
impl !Send for Observer
impl !Sync for Observer
impl !UnwindSafe for Observer
impl Freeze for Observer
impl Unpin for Observer
impl UnsafeUnpin for Observer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more