#[cfg(test)]
mod state_test;
use std::fmt;
#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)]
pub enum ConnectionState {
#[default]
Unspecified,
New,
Checking,
Connected,
Completed,
Failed,
Disconnected,
Closed,
}
impl fmt::Display for ConnectionState {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s = match *self {
Self::Unspecified => "Unspecified",
Self::New => "New",
Self::Checking => "Checking",
Self::Connected => "Connected",
Self::Completed => "Completed",
Self::Failed => "Failed",
Self::Disconnected => "Disconnected",
Self::Closed => "Closed",
};
write!(f, "{s}")
}
}
impl From<u8> for ConnectionState {
fn from(v: u8) -> Self {
match v {
1 => Self::New,
2 => Self::Checking,
3 => Self::Connected,
4 => Self::Completed,
5 => Self::Failed,
6 => Self::Disconnected,
7 => Self::Closed,
_ => Self::Unspecified,
}
}
}
#[derive(Default, PartialEq, Eq, Copy, Clone)]
pub enum GatheringState {
#[default]
Unspecified,
New,
Gathering,
Complete,
}
impl From<u8> for GatheringState {
fn from(v: u8) -> Self {
match v {
1 => Self::New,
2 => Self::Gathering,
3 => Self::Complete,
_ => Self::Unspecified,
}
}
}
impl fmt::Display for GatheringState {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s = match *self {
Self::New => "new",
Self::Gathering => "gathering",
Self::Complete => "complete",
Self::Unspecified => "unspecified",
};
write!(f, "{s}")
}
}