1use mm1_common::types::{Never, StdError};
2
3pub trait Quit: Send {
4 fn quit<E>(&mut self, result: Result<(), E>) -> impl Future<Output = Never> + Send
5 where
6 E: StdError + Send + Sync + 'static,
7 {
8 async move {
9 match result {
10 Ok(()) => self.quit_ok().await,
11 Err(reason) => self.quit_err(reason).await,
12 }
13 }
14 }
15
16 fn quit_ok(&mut self) -> impl Future<Output = Never> + Send;
17
18 fn quit_err<E>(&mut self, reason: E) -> impl Future<Output = Never> + Send
19 where
20 E: StdError + Send + Sync + 'static;
21}