1use std::collections::HashMap;
2use std::net::IpAddr;
3use time::Timespec;
4use uuid::Uuid;
5
6use crate::error::{Error, Result};
7use crate::frame::frame_result::{ColType, ColTypeOption, ColTypeOptionValue};
8use crate::types::blob::Blob;
9use crate::types::data_serialization_types::*;
10use crate::types::decimal::Decimal;
11use crate::types::list::List;
12use crate::types::tuple::Tuple;
13use crate::types::udt::UDT;
14use crate::types::{AsRust, AsRustType, CBytes};
15
16#[derive(Debug)]
17pub struct Map {
18 metadata: ColTypeOption,
19 data: Vec<(CBytes, CBytes)>,
20}
21
22impl Map {
23 pub fn new(data: Vec<(CBytes, CBytes)>, meta: ColTypeOption) -> Map {
25 Map {
26 metadata: meta,
27 data: data,
28 }
29 }
30}
31
32impl AsRust for Map {}
33
34map_as_rust!({ Blob }, { Blob });
40map_as_rust!({ Blob }, { String });
41map_as_rust!({ Blob }, { bool });
42map_as_rust!({ Blob }, { i64 });
43map_as_rust!({ Blob }, { i32 });
44map_as_rust!({ Blob }, { i16 });
45map_as_rust!({ Blob }, { i8 });
46map_as_rust!({ Blob }, { f64 });
47map_as_rust!({ Blob }, { f32 });
48map_as_rust!({ Blob }, { IpAddr });
49map_as_rust!({ Blob }, { Uuid });
50map_as_rust!({ Blob }, { Timespec });
51map_as_rust!({ Blob }, { List });
52map_as_rust!({ Blob }, { Map });
53map_as_rust!({ Blob }, { UDT });
54map_as_rust!({ Blob }, { Tuple });
55map_as_rust!({ Blob }, { Decimal });
56
57map_as_rust!({ String }, { Blob });
58map_as_rust!({ String }, { String });
59map_as_rust!({ String }, { bool });
60map_as_rust!({ String }, { i64 });
61map_as_rust!({ String }, { i32 });
62map_as_rust!({ String }, { i16 });
63map_as_rust!({ String }, { i8 });
64map_as_rust!({ String }, { f64 });
65map_as_rust!({ String }, { f32 });
66map_as_rust!({ String }, { IpAddr });
67map_as_rust!({ String }, { Uuid });
68map_as_rust!({ String }, { Timespec });
69map_as_rust!({ String }, { List });
70map_as_rust!({ String }, { Map });
71map_as_rust!({ String }, { UDT });
72map_as_rust!({ String }, { Tuple });
73map_as_rust!({ String }, { Decimal });
74
75map_as_rust!({ bool }, { Blob });
76map_as_rust!({ bool }, { String });
77map_as_rust!({ bool }, { bool });
78map_as_rust!({ bool }, { i64 });
79map_as_rust!({ bool }, { i32 });
80map_as_rust!({ bool }, { i16 });
81map_as_rust!({ bool }, { i8 });
82map_as_rust!({ bool }, { f64 });
83map_as_rust!({ bool }, { f32 });
84map_as_rust!({ bool }, { IpAddr });
85map_as_rust!({ bool }, { Uuid });
86map_as_rust!({ bool }, { Timespec });
87map_as_rust!({ bool }, { List });
88map_as_rust!({ bool }, { Map });
89map_as_rust!({ bool }, { UDT });
90map_as_rust!({ bool }, { Tuple });
91map_as_rust!({ bool }, { Decimal });
92
93map_as_rust!({ i64 }, { Blob });
94map_as_rust!({ i64 }, { String });
95map_as_rust!({ i64 }, { bool });
96map_as_rust!({ i64 }, { i64 });
97map_as_rust!({ i64 }, { i32 });
98map_as_rust!({ i64 }, { i16 });
99map_as_rust!({ i64 }, { i8 });
100map_as_rust!({ i64 }, { f64 });
101map_as_rust!({ i64 }, { f32 });
102map_as_rust!({ i64 }, { IpAddr });
103map_as_rust!({ i64 }, { Uuid });
104map_as_rust!({ i64 }, { Timespec });
105map_as_rust!({ i64 }, { List });
106map_as_rust!({ i64 }, { Map });
107map_as_rust!({ i64 }, { UDT });
108map_as_rust!({ i64 }, { Tuple });
109map_as_rust!({ i64 }, { Decimal });
110
111map_as_rust!({ i32 }, { Blob });
112map_as_rust!({ i32 }, { String });
113map_as_rust!({ i32 }, { bool });
114map_as_rust!({ i32 }, { i64 });
115map_as_rust!({ i32 }, { i32 });
116map_as_rust!({ i32 }, { i16 });
117map_as_rust!({ i32 }, { i8 });
118map_as_rust!({ i32 }, { f64 });
119map_as_rust!({ i32 }, { f32 });
120map_as_rust!({ i32 }, { IpAddr });
121map_as_rust!({ i32 }, { Uuid });
122map_as_rust!({ i32 }, { Timespec });
123map_as_rust!({ i32 }, { List });
124map_as_rust!({ i32 }, { Map });
125map_as_rust!({ i32 }, { UDT });
126map_as_rust!({ i32 }, { Tuple });
127map_as_rust!({ i32 }, { Decimal });
128
129map_as_rust!({ i16 }, { Blob });
130map_as_rust!({ i16 }, { String });
131map_as_rust!({ i16 }, { bool });
132map_as_rust!({ i16 }, { i64 });
133map_as_rust!({ i16 }, { i32 });
134map_as_rust!({ i16 }, { i16 });
135map_as_rust!({ i16 }, { i8 });
136map_as_rust!({ i16 }, { f64 });
137map_as_rust!({ i16 }, { f32 });
138map_as_rust!({ i16 }, { IpAddr });
139map_as_rust!({ i16 }, { Uuid });
140map_as_rust!({ i16 }, { Timespec });
141map_as_rust!({ i16 }, { List });
142map_as_rust!({ i16 }, { Map });
143map_as_rust!({ i16 }, { UDT });
144map_as_rust!({ i16 }, { Tuple });
145map_as_rust!({ i16 }, { Decimal });
146
147map_as_rust!({ i8 }, { Blob });
148map_as_rust!({ i8 }, { String });
149map_as_rust!({ i8 }, { bool });
150map_as_rust!({ i8 }, { i64 });
151map_as_rust!({ i8 }, { i32 });
152map_as_rust!({ i8 }, { i16 });
153map_as_rust!({ i8 }, { i8 });
154map_as_rust!({ i8 }, { f64 });
155map_as_rust!({ i8 }, { f32 });
156map_as_rust!({ i8 }, { IpAddr });
157map_as_rust!({ i8 }, { Uuid });
158map_as_rust!({ i8 }, { Timespec });
159map_as_rust!({ i8 }, { List });
160map_as_rust!({ i8 }, { Map });
161map_as_rust!({ i8 }, { UDT });
162map_as_rust!({ i8 }, { Tuple });
163map_as_rust!({ i8 }, { Decimal });
164
165map_as_rust!({ IpAddr }, { Blob });
166map_as_rust!({ IpAddr }, { String });
167map_as_rust!({ IpAddr }, { bool });
168map_as_rust!({ IpAddr }, { i64 });
169map_as_rust!({ IpAddr }, { i32 });
170map_as_rust!({ IpAddr }, { i16 });
171map_as_rust!({ IpAddr }, { i8 });
172map_as_rust!({ IpAddr }, { f64 });
173map_as_rust!({ IpAddr }, { f32 });
174map_as_rust!({ IpAddr }, { IpAddr });
175map_as_rust!({ IpAddr }, { Uuid });
176map_as_rust!({ IpAddr }, { Timespec });
177map_as_rust!({ IpAddr }, { List });
178map_as_rust!({ IpAddr }, { Map });
179map_as_rust!({ IpAddr }, { UDT });
180map_as_rust!({ IpAddr }, { Tuple });
181map_as_rust!({ IpAddr }, { Decimal });
182
183map_as_rust!({ Uuid }, { Blob });
184map_as_rust!({ Uuid }, { String });
185map_as_rust!({ Uuid }, { bool });
186map_as_rust!({ Uuid }, { i64 });
187map_as_rust!({ Uuid }, { i32 });
188map_as_rust!({ Uuid }, { i16 });
189map_as_rust!({ Uuid }, { i8 });
190map_as_rust!({ Uuid }, { f64 });
191map_as_rust!({ Uuid }, { f32 });
192map_as_rust!({ Uuid }, { IpAddr });
193map_as_rust!({ Uuid }, { Uuid });
194map_as_rust!({ Uuid }, { Timespec });
195map_as_rust!({ Uuid }, { List });
196map_as_rust!({ Uuid }, { Map });
197map_as_rust!({ Uuid }, { UDT });
198map_as_rust!({ Uuid }, { Tuple });
199map_as_rust!({ Uuid }, { Decimal });
200
201map_as_rust!({ Timespec }, { Blob });
202map_as_rust!({ Timespec }, { String });
203map_as_rust!({ Timespec }, { bool });
204map_as_rust!({ Timespec }, { i64 });
205map_as_rust!({ Timespec }, { i32 });
206map_as_rust!({ Timespec }, { i16 });
207map_as_rust!({ Timespec }, { i8 });
208map_as_rust!({ Timespec }, { f64 });
209map_as_rust!({ Timespec }, { f32 });
210map_as_rust!({ Timespec }, { IpAddr });
211map_as_rust!({ Timespec }, { Uuid });
212map_as_rust!({ Timespec }, { Timespec });
213map_as_rust!({ Timespec }, { List });
214map_as_rust!({ Timespec }, { Map });
215map_as_rust!({ Timespec }, { UDT });
216map_as_rust!({ Timespec }, { Tuple });
217map_as_rust!({ Timespec }, { Decimal });
218
219map_as_rust!({ Tuple }, { Blob });
220map_as_rust!({ Tuple }, { String });
221map_as_rust!({ Tuple }, { bool });
222map_as_rust!({ Tuple }, { i64 });
223map_as_rust!({ Tuple }, { i32 });
224map_as_rust!({ Tuple }, { i16 });
225map_as_rust!({ Tuple }, { i8 });
226map_as_rust!({ Tuple }, { f64 });
227map_as_rust!({ Tuple }, { f32 });
228map_as_rust!({ Tuple }, { IpAddr });
229map_as_rust!({ Tuple }, { Uuid });
230map_as_rust!({ Tuple }, { Timespec });
231map_as_rust!({ Tuple }, { List });
232map_as_rust!({ Tuple }, { Map });
233map_as_rust!({ Tuple }, { UDT });
234map_as_rust!({ Tuple }, { Tuple });
235map_as_rust!({ Tuple }, { Decimal });