mm1_core/context/
quit.rs

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