1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::Flow;

pub mod recoverable;
pub mod request_hint;
pub mod sequence;
pub mod tag;
pub mod value;

pub enum Status<S = ()> {
    /// The protocol was not used.
    Skipped(S),

    Flow(Flow)
}

impl<S> Status<S> {
    pub fn r#continue() -> Self {
        Self::Flow(Flow::Continue)
    }

    pub fn done() -> Self {
        Self::Flow(Flow::Done)
    }

    pub fn r#break() -> Self {
        Self::Flow(Flow::Break)
    }
}

impl Status {
    pub fn skipped() -> Self {
        Self::Skipped(())
    }
}

impl From<Flow> for Status {
    fn from(value: Flow) -> Self {
        Status::Flow(value)
    }
}