use crate::*; use std::sync::{Arc, atomic::AtomicBool}; #[derive(Clone)] pub struct Exit(Arc); impl Exit { pub fn run (run: impl FnOnce(Self)->Usually) -> Usually { run(Self(Arc::new(AtomicBool::new(false)))) } pub fn is (event: &Event) -> bool { matches!(event, Event::Key(KeyEvent { modifiers: KeyModifiers::CONTROL, code: KeyCode::Char('c'), kind: KeyEventKind::Press, state: KeyEventState::NONE })) } } impl AsRef> for Exit { fn as_ref (&self) -> &Arc { &self.0 } }