pub struct ReactiveCell<T> { /* private fields */ }
Expand description
Like a RefCell, but you can subscribe to changes.
In addition to the RefCell methods, ReactiveCell also provides
until_change.
After each time the cell is mutably borrowed, the Stream + Future
returned
by until_change will fire.
use futures_lite::future::FutureExt;
async fn do_something_and_modify_cell(cell: &ReactiveCell<i32>) {
// ...
*cell.borrow_mut() += 1;
}
let cell = ReactiveCell::new(123);
do_something_and_modify_cell(&cell).race(
async {
cell.until_change().await;
println!("Modified!");
}
).await;
Implementations§
source§impl<T> ReactiveCell<T>
impl<T> ReactiveCell<T>
pub fn until_change(&self) -> UntilChangeFuture<'_, T>
source§impl<T> ReactiveCell<T>
impl<T> ReactiveCell<T>
pub fn new(data: T) -> Self
pub fn borrow(&self) -> Ref<'_, T>
pub fn borrow_mut(&self) -> ReactiveCellBorrowMut<'_, T>
pub fn try_borrow(&self) -> Result<Ref<'_, T>, BorrowError>
pub fn try_borrow_mut( &self ) -> Result<ReactiveCellBorrowMut<'_, T>, BorrowMutError>
Trait Implementations§
source§impl<T: Clone> Clone for ReactiveCell<T>
impl<T: Clone> Clone for ReactiveCell<T>
source§impl<T: Debug> Debug for ReactiveCell<T>
impl<T: Debug> Debug for ReactiveCell<T>
Auto Trait Implementations§
impl<T> !RefUnwindSafe for ReactiveCell<T>
impl<T> Send for ReactiveCell<T>where T: Send,
impl<T> !Sync for ReactiveCell<T>
impl<T> Unpin for ReactiveCell<T>where T: Unpin,
impl<T> UnwindSafe for ReactiveCell<T>where T: UnwindSafe,
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