1use std::collections::HashMap;
2
3use chrono::{DateTime, Utc};
4
5use crate::error::DxrError;
6use crate::traits::{TryToParams, TryToValue};
7use crate::values::Value;
8
9use super::utils::*;
10
11impl TryToParams for Value {
14 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
15 Ok(vec![self.try_to_value()?])
16 }
17}
18
19impl TryToParams for &Value {
20 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
21 Ok(vec![self.try_to_value()?])
22 }
23}
24
25impl TryToParams for i32 {
26 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
27 Ok(vec![self.try_to_value()?])
28 }
29}
30
31#[cfg(feature = "i8")]
32impl TryToParams for i64 {
33 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
34 Ok(vec![self.try_to_value()?])
35 }
36}
37
38impl TryToParams for bool {
39 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
40 Ok(vec![self.try_to_value()?])
41 }
42}
43
44impl TryToParams for String {
45 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
46 Ok(vec![self.try_to_value()?])
47 }
48}
49
50impl TryToParams for &str {
51 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
52 Ok(vec![self.try_to_value()?])
53 }
54}
55
56impl TryToParams for f64 {
57 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
58 Ok(vec![self.try_to_value()?])
59 }
60}
61
62impl TryToParams for DateTime<Utc> {
63 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
64 Ok(vec![self.try_to_value()?])
65 }
66}
67
68impl TryToParams for Vec<u8> {
69 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
70 Ok(vec![self.try_to_value()?])
71 }
72}
73
74impl<const N: usize> TryToParams for [u8; N] {
75 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
76 Ok(vec![self.try_to_value()?])
77 }
78}
79
80impl TryToParams for &[u8] {
81 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
82 Ok(vec![self.try_to_value()?])
83 }
84}
85
86#[cfg(feature = "nil")]
87impl<T> TryToParams for Option<T>
88where
89 T: TryToValue,
90{
91 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
92 Ok(vec![self.try_to_value()?])
93 }
94}
95
96#[cfg(feature = "nil")]
97impl<T> TryToParams for &Option<T>
98where
99 T: TryToValue,
100{
101 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
102 Ok(vec![self.try_to_value()?])
103 }
104}
105
106impl<T> TryToParams for Vec<T>
109where
110 T: TryToValue,
111{
112 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
113 self.iter().map(|v| v.try_to_value()).collect()
114 }
115}
116
117impl<T, const N: usize> TryToParams for [T; N]
118where
119 T: TryToValue,
120{
121 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
122 self.iter().map(|v| v.try_to_value()).collect()
123 }
124}
125
126impl<T> TryToParams for &[T]
127where
128 T: TryToValue,
129{
130 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
131 self.iter().map(|v| v.try_to_value()).collect()
132 }
133}
134
135impl<T> TryToParams for HashMap<String, T>
138where
139 T: TryToValue,
140{
141 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
142 Ok(vec![self.try_to_value()?])
143 }
144}
145
146impl<T> TryToParams for HashMap<&str, T>
147where
148 T: TryToValue,
149{
150 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
151 Ok(vec![self.try_to_value()?])
152 }
153}
154
155impl<T> TryToParams for (T,)
158where
159 T: TryToValue,
160{
161 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
162 tuple_to_values_1(self)
163 }
164}
165
166impl<A, B> TryToParams for (A, B)
167where
168 A: TryToValue,
169 B: TryToValue,
170{
171 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
172 tuple_to_values_2(self)
173 }
174}
175
176impl<A, B, C> TryToParams for (A, B, C)
177where
178 A: TryToValue,
179 B: TryToValue,
180 C: TryToValue,
181{
182 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
183 tuple_to_values_3(self)
184 }
185}
186
187impl<A, B, C, D> TryToParams for (A, B, C, D)
188where
189 A: TryToValue,
190 B: TryToValue,
191 C: TryToValue,
192 D: TryToValue,
193{
194 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
195 tuple_to_values_4(self)
196 }
197}
198
199impl<A, B, C, D, E> TryToParams for (A, B, C, D, E)
200where
201 A: TryToValue,
202 B: TryToValue,
203 C: TryToValue,
204 D: TryToValue,
205 E: TryToValue,
206{
207 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
208 tuple_to_values_5(self)
209 }
210}
211
212impl<A, B, C, D, E, F> TryToParams for (A, B, C, D, E, F)
213where
214 A: TryToValue,
215 B: TryToValue,
216 C: TryToValue,
217 D: TryToValue,
218 E: TryToValue,
219 F: TryToValue,
220{
221 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
222 tuple_to_values_6(self)
223 }
224}
225
226impl<A, B, C, D, E, F, G> TryToParams for (A, B, C, D, E, F, G)
227where
228 A: TryToValue,
229 B: TryToValue,
230 C: TryToValue,
231 D: TryToValue,
232 E: TryToValue,
233 F: TryToValue,
234 G: TryToValue,
235{
236 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
237 tuple_to_values_7(self)
238 }
239}
240
241impl<A, B, C, D, E, F, G, H> TryToParams for (A, B, C, D, E, F, G, H)
242where
243 A: TryToValue,
244 B: TryToValue,
245 C: TryToValue,
246 D: TryToValue,
247 E: TryToValue,
248 F: TryToValue,
249 G: TryToValue,
250 H: TryToValue,
251{
252 fn try_to_params(&self) -> Result<Vec<Value>, DxrError> {
253 tuple_to_values_8(self)
254 }
255}
256
257