#[derive(Debug, Copy, Eq, PartialEq, Clone)]
pub enum ResponseStatus<T = ()> {
Done(T),
SendNext,
Continue,
}
impl<T> ResponseStatus<T> {
pub fn done(self) -> Option<T> {
match self {
ResponseStatus::Done(x) => Some(x),
_ => None,
}
}
pub fn is_done(&self) -> bool {
match *self {
ResponseStatus::Done(_) => true,
_ => false,
}
}
pub fn is_send_next(&self) -> bool {
match *self {
ResponseStatus::SendNext => true,
_ => false,
}
}
pub fn is_continue(&self) -> bool {
match *self {
ResponseStatus::Continue => true,
_ => false,
}
}
pub fn as_ref(&self) -> ResponseStatus<&T> {
match *self {
ResponseStatus::Done(ref x) => ResponseStatus::Done(x),
ResponseStatus::SendNext => ResponseStatus::SendNext,
ResponseStatus::Continue => ResponseStatus::Continue,
}
}
pub fn as_mut(&mut self) -> ResponseStatus<&mut T> {
match *self {
ResponseStatus::Done(ref mut x) => ResponseStatus::Done(x),
ResponseStatus::SendNext => ResponseStatus::SendNext,
ResponseStatus::Continue => ResponseStatus::Continue,
}
}
}