Another project
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 666 B View raw
1use std::sync::atomic::{AtomicBool, Ordering}; 2 3static NEVER: AtomicBool = AtomicBool::new(false); 4 5pub trait Cancel { 6 fn is_canceled(&self) -> bool; 7} 8 9impl Cancel for AtomicBool { 10 fn is_canceled(&self) -> bool { 11 self.load(Ordering::Relaxed) 12 } 13} 14 15#[derive(Copy, Clone)] 16pub struct CancelFlag<'a>(&'a (dyn Cancel + Sync)); 17 18impl<'a> CancelFlag<'a> { 19 #[must_use] 20 pub fn new(source: &'a (dyn Cancel + Sync)) -> Self { 21 Self(source) 22 } 23 24 #[must_use] 25 pub fn is_canceled(self) -> bool { 26 self.0.is_canceled() 27 } 28} 29 30impl CancelFlag<'static> { 31 #[must_use] 32 pub fn never() -> Self { 33 Self(&NEVER) 34 } 35}