use serde::{Serialize, Deserialize}; use chrono_tz::Tz; use chrono_tz::US::{Eastern, Central, Pacific}; use chrono_tz::Etc::GMTPlus5; use Market::*; #[derive(Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)] #[repr(u8)] pub enum Market { Pjm = 1, Miso = 2, Caiso = 3, Ercot = 4, Spp = 5, Nyiso = 6, Iso = 7, } impl Market { pub fn time_zone(&self) -> Tz { match self { Pjm => Eastern, Miso => GMTPlus5, Caiso => Pacific, Ercot => Central, Spp => Central, Nyiso => Eastern, Iso => Eastern, } } pub fn as_str(&self) -> &'static str { match self { Pjm => "pjm", Miso => "miso", Caiso => "caiso", Ercot => "ercot", Spp => "spp", Nyiso => "nyiso", Iso => "isone", } } } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }