use std::fmt::{Display, Formatter, Result};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum OrderStatus {
#[serde(rename = "New")]
New, #[serde(rename = "PartiallyFilled")]
PartiallyFilled,
#[serde(rename = "Untriggered")]
Untriggered,
#[serde(rename = "PartiallyFilledCanceled")]
PartiallyFilledCanceled, #[serde(rename = "Filled")]
Filled,
#[serde(rename = "Cancelled")]
Cancelled, #[serde(rename = "Triggered")]
Triggered, #[serde(rename = "Deactivated")]
Deactivated, }
impl Display for OrderStatus {
fn fmt(&self, f: &mut Formatter) -> Result {
match self {
OrderStatus::New => write!(f, "New"),
OrderStatus::PartiallyFilled => write!(f, "PartiallyFilled"),
OrderStatus::Untriggered => write!(f, "Untriggered"),
OrderStatus::PartiallyFilledCanceled => write!(f, "PartiallyFilledCanceled"),
OrderStatus::Filled => write!(f, "Filled"),
OrderStatus::Cancelled => write!(f, "Cancelled"),
OrderStatus::Triggered => write!(f, "Triggered"),
OrderStatus::Deactivated => write!(f, "Deactivated"),
}
}
}
impl OrderStatus {
pub fn is_open(&self) -> bool {
match self {
OrderStatus::New => true,
OrderStatus::PartiallyFilled => true,
OrderStatus::Untriggered => true,
OrderStatus::PartiallyFilledCanceled => true,
OrderStatus::Filled => false,
OrderStatus::Cancelled => false,
OrderStatus::Triggered => false,
OrderStatus::Deactivated => false,
}
}
pub fn is_closed(&self) -> bool {
!self.is_open()
}
}