use crate::patterns::observable::Observer;
use crate::shared::{SharedMut, shared_mut};
pub(crate) struct Flag {
up: bool,
}
impl Flag {
pub(crate) fn new() -> SharedMut<Flag> {
shared_mut(Flag { up: false })
}
pub(crate) fn lower(flag: &SharedMut<Flag>) {
flag.borrow_mut().up = false;
}
pub(crate) fn is_up(flag: &SharedMut<Flag>) -> bool {
flag.borrow().up
}
}
impl Observer for Flag {
fn update(&mut self) {
self.up = true;
}
}
pub(crate) fn as_observer(flag: &SharedMut<Flag>) -> SharedMut<dyn Observer> {
flag.clone()
}