deribit_http/model/
email_settings.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9#[serde(rename_all = "lowercase")]
10pub enum EmailLanguage {
11 En,
13 Ko,
15 Zh,
17 Ja,
19 Ru,
21 Es,
23 Pt,
25 Tr,
27 Vi,
29}
30
31impl EmailLanguage {
32 #[must_use]
34 pub fn as_str(&self) -> &'static str {
35 match self {
36 Self::En => "en",
37 Self::Ko => "ko",
38 Self::Zh => "zh",
39 Self::Ja => "ja",
40 Self::Ru => "ru",
41 Self::Es => "es",
42 Self::Pt => "pt",
43 Self::Tr => "tr",
44 Self::Vi => "vi",
45 }
46 }
47}
48
49impl std::fmt::Display for EmailLanguage {
50 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
51 write!(f, "{}", self.as_str())
52 }
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58
59 #[test]
60 fn test_email_language_serialization() {
61 let lang = EmailLanguage::En;
62 let json = serde_json::to_string(&lang).expect("Failed to serialize");
63 assert_eq!(json, "\"en\"");
64 }
65
66 #[test]
67 fn test_email_language_deserialization() {
68 let json = "\"ko\"";
69 let lang: EmailLanguage = serde_json::from_str(json).expect("Failed to parse");
70 assert_eq!(lang, EmailLanguage::Ko);
71 }
72
73 #[test]
74 fn test_email_language_as_str() {
75 assert_eq!(EmailLanguage::Ja.as_str(), "ja");
76 assert_eq!(EmailLanguage::Ru.as_str(), "ru");
77 }
78}