ek_data/
subscribe_request.rs1use crate::constant::Exchange;
4use crate::symbol::{SymbolError, vt_symbol};
5use std::str::FromStr;
6
7#[derive(Debug, Clone, PartialEq, Eq, Default)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct SubscribeRequest {
11 pub symbol: String,
13 pub exchange: Exchange,
15}
16
17impl SubscribeRequest {
18 pub fn from_vt_symbol(vt: &str) -> Result<Self, SymbolError> {
20 crate::symbol::parse_vt_symbol(vt).map(|(symbol, exchange)| Self { symbol, exchange })
21 }
22
23 pub fn en_symbol(&self) -> String {
25 vt_symbol(&self.symbol, self.exchange)
26 }
27}
28
29impl FromStr for SubscribeRequest {
30 type Err = SymbolError;
31
32 fn from_str(s: &str) -> Result<Self, Self::Err> {
33 Self::from_vt_symbol(s)
34 }
35}