1#[derive(Default)]
3pub struct Cancelled;
4
5pub trait Token: Send + Sync {
8 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}