tencent_sdk/services/dns/
types.rs1use serde::Serialize;
2
3#[derive(Clone, Copy, Debug, PartialEq)]
5pub enum RecordType<'a> {
6 Txt,
7 A,
8 Cname,
9 Custom(&'a str),
10}
11
12impl<'a> RecordType<'a> {
13 pub fn as_str(&self) -> &str {
14 match self {
15 RecordType::Txt => "TXT",
16 RecordType::A => "A",
17 RecordType::Cname => "CNAME",
18 RecordType::Custom(value) => value,
19 }
20 }
21}
22
23impl<'a> From<&'a str> for RecordType<'a> {
24 fn from(value: &'a str) -> Self {
25 match value.to_uppercase().as_str() {
26 "TXT" => RecordType::Txt,
27 "A" => RecordType::A,
28 "CNAME" => RecordType::Cname,
29 _ => RecordType::Custom(value),
30 }
31 }
32}
33
34impl<'a> Serialize for RecordType<'a> {
35 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
36 where
37 S: serde::Serializer,
38 {
39 serializer.serialize_str(self.as_str())
40 }
41}
42
43#[derive(Clone, Copy, Debug, PartialEq)]
45pub enum RecordLine<'a> {
46 Default,
47 Custom(&'a str),
48}
49
50impl<'a> RecordLine<'a> {
51 pub fn as_str(&self) -> &str {
52 match self {
53 RecordLine::Default => "默认",
54 RecordLine::Custom(value) => value,
55 }
56 }
57}
58
59impl<'a> From<&'a str> for RecordLine<'a> {
60 fn from(value: &'a str) -> Self {
61 match value {
62 "默认" => RecordLine::Default,
63 other if other.eq_ignore_ascii_case("default") => RecordLine::Default,
64 other => RecordLine::Custom(other),
65 }
66 }
67}
68
69impl<'a> Serialize for RecordLine<'a> {
70 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
71 where
72 S: serde::Serializer,
73 {
74 serializer.serialize_str(self.as_str())
75 }
76}