gproxy_protocol/openai/common/
mod.rs1macro_rules! extensible_string_enum {
2 ($outer:ident, $known:ident { $($variant:ident => $wire:literal),+ $(,)? }) => {
3 #[derive(Debug, Clone, PartialEq, Eq)]
4 pub enum $outer {
5 Known($known),
6 Unknown(String),
7 }
8
9 impl $outer {
10 pub fn as_str(&self) -> &str {
11 match self {
12 Self::Known(known) => known.as_str(),
13 Self::Unknown(value) => value,
14 }
15 }
16 }
17
18 impl serde::Serialize for $outer {
19 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
20 serializer.serialize_str(self.as_str())
21 }
22 }
23
24 impl<'de> serde::Deserialize<'de> for $outer {
25 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
26 let value = <String as serde::Deserialize>::deserialize(deserializer)?;
27 Ok(match value.as_str() {
28 $($wire => Self::Known($known::$variant),)+
29 _ => Self::Unknown(value),
30 })
31 }
32 }
33
34 #[derive(Debug, Clone, PartialEq, Eq)]
35 pub enum $known {
36 $($variant,)+
37 }
38
39 impl $known {
40 pub fn as_str(&self) -> &'static str {
41 match self {
42 $(Self::$variant => $wire,)+
43 }
44 }
45 }
46
47 impl serde::Serialize for $known {
48 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
49 serializer.serialize_str(self.as_str())
50 }
51 }
52
53 impl<'de> serde::Deserialize<'de> for $known {
54 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
55 let value = <String as serde::Deserialize>::deserialize(deserializer)?;
56 match value.as_str() {
57 $($wire => Ok(Self::$variant),)+
58 _ => Err(serde::de::Error::unknown_variant(&value, &[$($wire,)+])),
59 }
60 }
61 }
62 };
63}
64
65macro_rules! strict_string_enum {
66 ($outer:ident { $($variant:ident => $wire:literal),+ $(,)? }) => {
67 #[derive(Debug, Clone, PartialEq, Eq)]
68 pub enum $outer {
69 $($variant,)+
70 Unknown(String),
71 }
72
73 impl $outer {
74 pub fn as_str(&self) -> &str {
75 match self {
76 $(Self::$variant => $wire,)+
77 Self::Unknown(value) => value,
78 }
79 }
80 }
81
82 impl serde::Serialize for $outer {
83 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
84 serializer.serialize_str(self.as_str())
85 }
86 }
87
88 impl<'de> serde::Deserialize<'de> for $outer {
89 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
90 let value = <String as serde::Deserialize>::deserialize(deserializer)?;
91 Ok(match value.as_str() {
92 $($wire => Self::$variant,)+
93 _ => Self::Unknown(value),
94 })
95 }
96 }
97 };
98}
99
100mod enums;
101mod formats;
102mod logprobs;
103mod model_ids;
104mod object_types;
105mod tools;
106mod types;
107
108pub use enums::*;
109pub use formats::*;
110pub use logprobs::*;
111pub use model_ids::*;
112pub use object_types::*;
113pub use tools::*;
114pub use types::*;