mm1_core/context/
quit.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use std::future::Future;

use crate::types::{Never, StdError};

pub trait Quit: Send {
    fn quit<E>(&mut self, result: Result<(), E>) -> impl Future<Output = Never> + Send
    where
        E: StdError + Send + Sync + 'static,
    {
        async move {
            match result {
                Ok(()) => self.quit_ok().await,
                Err(reason) => self.quit_err(reason).await,
            }
        }
    }

    fn quit_ok(&mut self) -> impl Future<Output = Never> + Send;

    fn quit_err<E>(&mut self, reason: E) -> impl Future<Output = Never> + Send
    where
        E: StdError + Send + Sync + 'static;
}