finance_query/constants/exchange_codes.rs
1/// Typed exchange code for screener queries.
2#[non_exhaustive]
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum ExchangeCode {
5 // ── US Equity ─────────────────────────────────────────────────────────
6 /// NYSE American / AMEX ("ASE")
7 Ase,
8 /// OTC Bulletin Board ("BTS")
9 Bts,
10 /// NASDAQ Capital Market ("NCM")
11 Ncm,
12 /// NASDAQ Global Market ("NGM")
13 Ngm,
14 /// NASDAQ Global Select Market ("NMS") — primary NASDAQ tier
15 Nms,
16 /// New York Stock Exchange ("NYQ")
17 Nyq,
18 /// NYSE Arca ("PCX")
19 Pcx,
20 /// OTC Pink Sheets / OTC Markets ("PNK")
21 Pnk,
22 // ── US Funds ──────────────────────────────────────────────────────────
23 /// NASDAQ — used for US mutual funds ("NAS")
24 Nas,
25 // ── International ─────────────────────────────────────────────────────
26 /// Australian Securities Exchange ("ASX")
27 Asx,
28 /// Bombay Stock Exchange ("BSE")
29 Bse,
30 /// Hong Kong Stock Exchange ("HKG")
31 Hkg,
32 /// Korea Exchange ("KRX")
33 Krx,
34 /// London Stock Exchange ("LSE")
35 Lse,
36 /// National Stock Exchange of India ("NSI")
37 Nsi,
38 /// Shanghai Stock Exchange ("SHH")
39 Shh,
40 /// Shenzhen Stock Exchange ("SHZ")
41 Shz,
42 /// Tokyo Stock Exchange ("TYO")
43 Tyo,
44 /// Toronto Stock Exchange ("TOR")
45 Tor,
46 /// XETRA / Deutsche Börse ("GER")
47 Ger,
48}
49
50impl ExchangeCode {
51 /// Returns the exchange code string used by Yahoo Finance.
52 pub fn as_str(self) -> &'static str {
53 match self {
54 ExchangeCode::Ase => "ASE",
55 ExchangeCode::Bts => "BTS",
56 ExchangeCode::Ncm => "NCM",
57 ExchangeCode::Ngm => "NGM",
58 ExchangeCode::Nms => "NMS",
59 ExchangeCode::Nyq => "NYQ",
60 ExchangeCode::Pcx => "PCX",
61 ExchangeCode::Pnk => "PNK",
62 ExchangeCode::Nas => "NAS",
63 ExchangeCode::Asx => "ASX",
64 ExchangeCode::Bse => "BSE",
65 ExchangeCode::Hkg => "HKG",
66 ExchangeCode::Krx => "KRX",
67 ExchangeCode::Lse => "LSE",
68 ExchangeCode::Nsi => "NSI",
69 ExchangeCode::Shh => "SHH",
70 ExchangeCode::Shz => "SHZ",
71 ExchangeCode::Tyo => "TYO",
72 ExchangeCode::Tor => "TOR",
73 ExchangeCode::Ger => "GER",
74 }
75 }
76}
77
78impl From<ExchangeCode> for String {
79 fn from(v: ExchangeCode) -> Self {
80 v.as_str().to_string()
81 }
82}