pub struct VecSubject<O>where
O: Observer,{ /* private fields */ }Expand description
Implements Subject backed by a Vec<T>.
If T implements Eq,
then DetachableSubject is also provided.
AttachableSubject is always provided.
§Examples
use roopes::prelude::*;
use std::{
cell::RefCell,
rc::Rc,
};
let mut vs = observer::VecSubject::default();
let has_run = Rc::new(RefCell::new(false));
{
let has_run = has_run.clone();
let lc: ObservingCommand<_> =
command::Heap::from(move
|| { (*has_run.borrow_mut()) =
true; })
.into();
vs.attach(lc);
}
assert!(!(*has_run.borrow()));
vs.notify();
assert!((*has_run.borrow()));Implementations§
Source§impl<O> VecSubject<O>where
O: Observer,
impl<O> VecSubject<O>where
O: Observer,
Sourcepub fn new(listeners: RefCell<Vec<O>>) -> VecSubject<O>
pub fn new(listeners: RefCell<Vec<O>>) -> VecSubject<O>
Creates a new VecSubject with an
existing list of listeners.
VecSubject::default is probably
preferable in most circumstances.
Trait Implementations§
Source§impl<O> AttachableSubject<O> for VecSubject<O>where
O: Observer,
impl<O> AttachableSubject<O> for VecSubject<O>where
O: Observer,
Source§impl<O> Default for VecSubject<O>where
O: Observer,
impl<O> Default for VecSubject<O>where
O: Observer,
Source§impl<O> DetachableSubject<O, DetachError> for VecSubject<O>
impl<O> DetachableSubject<O, DetachError> for VecSubject<O>
Auto Trait Implementations§
impl<O> !Freeze for VecSubject<O>
impl<O> !RefUnwindSafe for VecSubject<O>
impl<O> Send for VecSubject<O>where
O: Send,
impl<O> !Sync for VecSubject<O>
impl<O> Unpin for VecSubject<O>where
O: Unpin,
impl<O> UnwindSafe for VecSubject<O>where
O: 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