nonogram_rs/
cancel.rs

1/// Placeholder error type for cancellation.
2#[derive(Default)]
3pub struct Cancelled;
4
5/// A trait for an arbitrary cancellation token.
6/// Use `()`, if you don't have any cancellation token.
7pub trait Token: Send + Sync {
8    /// Returns [Cancelled], if the operation has been cancelled.
9    fn check(&self) -> Result<(), Cancelled>;
10}
11
12impl Token for () {
13    fn check(&self) -> Result<(), Cancelled> {
14        Ok(())
15    }
16}
17
18#[cfg(test)]
19#[derive(Default)]
20pub struct Cancel;
21
22#[cfg(test)]
23impl Token for Cancel {
24    fn check(&self) -> Result<(), Cancelled> {
25        Err(Cancelled::default())
26    }
27}
28
29#[cfg(test)]
30mod test {
31    use super::*;
32
33    #[test]
34    fn check_tuple() {
35        assert!(matches!(().check(), Ok(())));
36    }
37}