#[derive(Default)]
pub struct Cancelled;
pub trait Token: Send + Sync {
fn check(&self) -> Result<(), Cancelled>;
}
impl Token for () {
fn check(&self) -> Result<(), Cancelled> {
Ok(())
}
}
#[cfg(test)]
#[derive(Default)]
pub struct Cancel;
#[cfg(test)]
impl Token for Cancel {
fn check(&self) -> Result<(), Cancelled> {
Err(Cancelled::default())
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn check_tuple() {
assert!(matches!(().check(), Ok(())));
}
}