nautilus_binance/common/sbe/spot/
order_side.rs

1#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
2#[repr(u8)]
3pub enum OrderSide {
4    Buy = 0x0_u8,
5    Sell = 0x1_u8,
6    NonRepresentable = 0xfe_u8,
7    #[default]
8    NullVal = 0xff_u8,
9}
10impl From<u8> for OrderSide {
11    #[inline]
12    fn from(v: u8) -> Self {
13        match v {
14            0x0_u8 => Self::Buy,
15            0x1_u8 => Self::Sell,
16            0xfe_u8 => Self::NonRepresentable,
17            _ => Self::NullVal,
18        }
19    }
20}
21impl From<OrderSide> for u8 {
22    #[inline]
23    fn from(v: OrderSide) -> Self {
24        match v {
25            OrderSide::Buy => 0x0_u8,
26            OrderSide::Sell => 0x1_u8,
27            OrderSide::NonRepresentable => 0xfe_u8,
28            OrderSide::NullVal => 0xff_u8,
29        }
30    }
31}
32impl core::str::FromStr for OrderSide {
33    type Err = ();
34
35    #[inline]
36    fn from_str(v: &str) -> core::result::Result<Self, Self::Err> {
37        match v {
38            "Buy" => Ok(Self::Buy),
39            "Sell" => Ok(Self::Sell),
40            "NonRepresentable" => Ok(Self::NonRepresentable),
41            _ => Ok(Self::NullVal),
42        }
43    }
44}
45impl core::fmt::Display for OrderSide {
46    #[inline]
47    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48        match self {
49            Self::Buy => write!(f, "Buy"),
50            Self::Sell => write!(f, "Sell"),
51            Self::NonRepresentable => write!(f, "NonRepresentable"),
52            Self::NullVal => write!(f, "NullVal"),
53        }
54    }
55}