mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2026-08-07 22:17:07 +02:00
24 lines
641 B
Rust
24 lines
641 B
Rust
use crate::*;
|
|
use std::sync::{Arc, atomic::AtomicBool};
|
|
|
|
#[derive(Clone)] pub struct Exit(Arc<AtomicBool>);
|
|
|
|
impl Exit {
|
|
pub fn run <T> (run: impl FnOnce(Self)->Usually<T>) -> Usually<T> {
|
|
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<Arc<AtomicBool>> for Exit {
|
|
fn as_ref (&self) -> &Arc<AtomicBool> {
|
|
&self.0
|
|
}
|
|
}
|