1
1
use std:: {
2
- borrow:: Cow ,
3
2
collections:: HashMap ,
4
3
net:: IpAddr ,
5
4
ops:: { Deref , DerefMut } ,
5
+ sync:: Arc ,
6
6
} ;
7
7
8
8
use scylla:: {
@@ -21,12 +21,12 @@ use uuid::Uuid;
21
21
use crate :: { ScyllaDB , ScyllaDBTypeInfo } ;
22
22
23
23
#[ derive( Default ) ]
24
- pub struct ScyllaDBArguments < ' q > {
24
+ pub struct ScyllaDBArguments {
25
25
pub ( crate ) types : Vec < ScyllaDBTypeInfo > ,
26
- pub ( crate ) buffer : ScyllaDBArgumentBuffer < ' q > ,
26
+ pub ( crate ) buffer : ScyllaDBArgumentBuffer ,
27
27
}
28
28
29
- impl < ' q > Arguments < ' q > for ScyllaDBArguments < ' q > {
29
+ impl < ' q > Arguments < ' q > for ScyllaDBArguments {
30
30
type Database = ScyllaDB ;
31
31
32
32
fn reserve ( & mut self , additional : usize , size : usize ) {
@@ -39,7 +39,7 @@ impl<'q> Arguments<'q> for ScyllaDBArguments<'q> {
39
39
T : ' q + sqlx:: Encode < ' q , Self :: Database > + sqlx:: Type < Self :: Database > ,
40
40
{
41
41
let ty = value. produces ( ) . unwrap_or_else ( T :: type_info) ;
42
- let _ = value. encode_by_ref ( & mut self . buffer ) ?;
42
+ let _ = value. encode ( & mut self . buffer ) ?;
43
43
self . types . push ( ty) ;
44
44
45
45
Ok ( ( ) )
@@ -51,7 +51,7 @@ impl<'q> Arguments<'q> for ScyllaDBArguments<'q> {
51
51
}
52
52
}
53
53
54
- impl < ' q > SerializeRow for ScyllaDBArguments < ' q > {
54
+ impl SerializeRow for ScyllaDBArguments {
55
55
fn serialize (
56
56
& self ,
57
57
ctx : & RowSerializationContext < ' _ > ,
@@ -76,108 +76,107 @@ impl<'q> SerializeRow for ScyllaDBArguments<'q> {
76
76
}
77
77
78
78
#[ derive( Default ) ]
79
- pub struct ScyllaDBArgumentBuffer < ' q > {
80
- pub ( crate ) buffer : Vec < ScyllaDBArgument < ' q > > ,
79
+ pub struct ScyllaDBArgumentBuffer {
80
+ pub ( crate ) buffer : Vec < ScyllaDBArgument > ,
81
81
}
82
82
83
- impl < ' q > Deref for ScyllaDBArgumentBuffer < ' q > {
84
- type Target = Vec < ScyllaDBArgument < ' q > > ;
83
+ impl Deref for ScyllaDBArgumentBuffer {
84
+ type Target = Vec < ScyllaDBArgument > ;
85
85
86
86
fn deref ( & self ) -> & Self :: Target {
87
87
& self . buffer
88
88
}
89
89
}
90
90
91
- impl < ' q > DerefMut for ScyllaDBArgumentBuffer < ' q > {
91
+ impl < ' q > DerefMut for ScyllaDBArgumentBuffer {
92
92
fn deref_mut ( & mut self ) -> & mut Self :: Target {
93
93
& mut self . buffer
94
94
}
95
95
}
96
96
97
- pub enum ScyllaDBArgument < ' q > {
97
+ pub enum ScyllaDBArgument {
98
98
Null ,
99
99
Boolean ( bool ) ,
100
- BooleanArray ( & ' q [ bool ] ) ,
100
+ BooleanArray ( Arc < Vec < bool > > ) ,
101
101
TinyInt ( i8 ) ,
102
- TinyIntArray ( & ' q [ i8 ] ) ,
102
+ TinyIntArray ( Arc < Vec < i8 > > ) ,
103
103
SmallInt ( i16 ) ,
104
- SmallIntArray ( & ' q [ i16 ] ) ,
104
+ SmallIntArray ( Arc < Vec < i16 > > ) ,
105
105
Int ( i32 ) ,
106
- IntArray ( & ' q [ i32 ] ) ,
106
+ IntArray ( Arc < Vec < i32 > > ) ,
107
107
BigInt ( i64 ) ,
108
- BigIntArray ( & ' q [ i64 ] ) ,
108
+ BigIntArray ( Arc < Vec < i64 > > ) ,
109
109
Float ( f32 ) ,
110
- FloatArray ( & ' q [ f32 ] ) ,
110
+ FloatArray ( Arc < Vec < f32 > > ) ,
111
111
Double ( f64 ) ,
112
- DoubleArray ( & ' q [ f64 ] ) ,
113
- Text ( Cow < ' q , str > ) ,
114
- TextArray ( & ' q [ String ] ) ,
115
- TextRefArray ( & ' q [ & ' q str ] ) ,
116
- Blob ( Cow < ' q , [ u8 ] > ) ,
112
+ DoubleArray ( Arc < Vec < f64 > > ) ,
113
+ Text ( Arc < String > ) ,
114
+ TextArray ( Arc < Vec < String > > ) ,
115
+ Blob ( Arc < Vec < u8 > > ) ,
117
116
Uuid ( Uuid ) ,
118
- UuidArray ( & ' q [ Uuid ] ) ,
117
+ UuidArray ( Arc < Vec < Uuid > > ) ,
119
118
Timeuuid ( CqlTimeuuid ) ,
120
- TimeuuidArray ( & ' q [ CqlTimeuuid ] ) ,
119
+ TimeuuidArray ( Arc < Vec < CqlTimeuuid > > ) ,
121
120
IpAddr ( IpAddr ) ,
122
- IpAddrArray ( & ' q [ IpAddr ] ) ,
121
+ IpAddrArray ( Arc < Vec < IpAddr > > ) ,
123
122
#[ cfg( feature = "bigdecimal-04" ) ]
124
123
BigDecimal ( bigdecimal_04:: BigDecimal ) ,
125
124
#[ cfg( feature = "bigdecimal-04" ) ]
126
- BigDecimalArray ( & ' q [ bigdecimal_04:: BigDecimal ] ) ,
125
+ BigDecimalArray ( Arc < Vec < bigdecimal_04:: BigDecimal > > ) ,
127
126
CqlTimestamp ( CqlTimestamp ) ,
128
- CqlTimestampArray ( & ' q [ CqlTimestamp ] ) ,
127
+ CqlTimestampArray ( Arc < Vec < CqlTimestamp > > ) ,
129
128
#[ cfg( feature = "time-03" ) ]
130
129
OffsetDateTime ( time_03:: OffsetDateTime ) ,
131
130
#[ cfg( feature = "time-03" ) ]
132
- OffsetDateTimeArray ( & ' q [ time_03:: OffsetDateTime ] ) ,
131
+ OffsetDateTimeArray ( Arc < Vec < time_03:: OffsetDateTime > > ) ,
133
132
#[ cfg( feature = "chrono-04" ) ]
134
133
ChronoDateTimeUTC ( chrono_04:: DateTime < chrono_04:: Utc > ) ,
135
134
#[ cfg( feature = "chrono-04" ) ]
136
- ChronoDateTimeUTCArray ( & ' q [ chrono_04:: DateTime < chrono_04:: Utc > ] ) ,
135
+ ChronoDateTimeUTCArray ( Arc < Vec < chrono_04:: DateTime < chrono_04:: Utc > > > ) ,
137
136
CqlDate ( CqlDate ) ,
138
- CqlDateArray ( & ' q [ CqlDate ] ) ,
137
+ CqlDateArray ( Arc < Vec < CqlDate > > ) ,
139
138
#[ cfg( feature = "time-03" ) ]
140
139
Date ( time_03:: Date ) ,
141
140
#[ cfg( feature = "time-03" ) ]
142
- DateArray ( & ' q [ time_03:: Date ] ) ,
141
+ DateArray ( Arc < Vec < time_03:: Date > > ) ,
143
142
#[ cfg( feature = "chrono-04" ) ]
144
143
ChronoNaiveDate ( chrono_04:: NaiveDate ) ,
145
144
#[ cfg( feature = "chrono-04" ) ]
146
- ChronoNaiveDateArray ( & ' q [ chrono_04:: NaiveDate ] ) ,
145
+ ChronoNaiveDateArray ( Arc < Vec < chrono_04:: NaiveDate > > ) ,
147
146
CqlTime ( CqlTime ) ,
148
- CqlTimeArray ( & ' q [ CqlTime ] ) ,
147
+ CqlTimeArray ( Arc < Vec < CqlTime > > ) ,
149
148
#[ cfg( feature = "time-03" ) ]
150
149
Time ( time_03:: Time ) ,
151
150
#[ cfg( feature = "time-03" ) ]
152
- TimeArray ( & ' q [ time_03:: Time ] ) ,
151
+ TimeArray ( Arc < Vec < time_03:: Time > > ) ,
153
152
#[ cfg( feature = "chrono-04" ) ]
154
153
ChronoNaiveTime ( chrono_04:: NaiveTime ) ,
155
154
#[ cfg( feature = "chrono-04" ) ]
156
- ChronoNaiveTimeArray ( & ' q [ chrono_04:: NaiveTime ] ) ,
157
- Tuple ( Box < dyn SerializeValue + Send + Sync + ' q > ) ,
158
- UserDefinedType ( & ' q ( dyn SerializeValue + Send + Sync ) ) ,
159
- UserDefinedTypeArray ( & ' q ( dyn SerializeValue + Send + Sync ) ) ,
160
- TextTextMap ( & ' q HashMap < String , String > ) ,
161
- TextBooleanMap ( & ' q HashMap < String , bool > ) ,
162
- TextTinyIntMap ( & ' q HashMap < String , i8 > ) ,
163
- TextSmallIntMap ( & ' q HashMap < String , i16 > ) ,
164
- TextIntMap ( & ' q HashMap < String , i32 > ) ,
165
- TextBigIntMap ( & ' q HashMap < String , i64 > ) ,
166
- TextFloatMap ( & ' q HashMap < String , f32 > ) ,
167
- TextDoubleMap ( & ' q HashMap < String , f64 > ) ,
168
- TextUuidMap ( & ' q HashMap < String , Uuid > ) ,
169
- UuidTextMap ( & ' q HashMap < Uuid , String > ) ,
170
- UuidBooleanMap ( & ' q HashMap < Uuid , bool > ) ,
171
- UuidTinyIntMap ( & ' q HashMap < Uuid , i8 > ) ,
172
- UuidSmallIntMap ( & ' q HashMap < Uuid , i16 > ) ,
173
- UuidIntMap ( & ' q HashMap < Uuid , i32 > ) ,
174
- UuidBigIntMap ( & ' q HashMap < Uuid , i64 > ) ,
175
- UuidFloatMap ( & ' q HashMap < Uuid , f32 > ) ,
176
- UuidDoubleMap ( & ' q HashMap < Uuid , f64 > ) ,
177
- UuidUuidMap ( & ' q HashMap < Uuid , Uuid > ) ,
155
+ ChronoNaiveTimeArray ( Arc < Vec < chrono_04:: NaiveTime > > ) ,
156
+ Tuple ( Arc < dyn SerializeValue + Send + Sync > ) ,
157
+ UserDefinedType ( Arc < dyn SerializeValue + Send + Sync > ) ,
158
+ UserDefinedTypeArray ( Arc < dyn SerializeValue + Send + Sync > ) ,
159
+ TextTextMap ( Arc < HashMap < String , String > > ) ,
160
+ TextBooleanMap ( Arc < HashMap < String , bool > > ) ,
161
+ TextTinyIntMap ( Arc < HashMap < String , i8 > > ) ,
162
+ TextSmallIntMap ( Arc < HashMap < String , i16 > > ) ,
163
+ TextIntMap ( Arc < HashMap < String , i32 > > ) ,
164
+ TextBigIntMap ( Arc < HashMap < String , i64 > > ) ,
165
+ TextFloatMap ( Arc < HashMap < String , f32 > > ) ,
166
+ TextDoubleMap ( Arc < HashMap < String , f64 > > ) ,
167
+ TextUuidMap ( Arc < HashMap < String , Uuid > > ) ,
168
+ UuidTextMap ( Arc < HashMap < Uuid , String > > ) ,
169
+ UuidBooleanMap ( Arc < HashMap < Uuid , bool > > ) ,
170
+ UuidTinyIntMap ( Arc < HashMap < Uuid , i8 > > ) ,
171
+ UuidSmallIntMap ( Arc < HashMap < Uuid , i16 > > ) ,
172
+ UuidIntMap ( Arc < HashMap < Uuid , i32 > > ) ,
173
+ UuidBigIntMap ( Arc < HashMap < Uuid , i64 > > ) ,
174
+ UuidFloatMap ( Arc < HashMap < Uuid , f32 > > ) ,
175
+ UuidDoubleMap ( Arc < HashMap < Uuid , f64 > > ) ,
176
+ UuidUuidMap ( Arc < HashMap < Uuid , Uuid > > ) ,
178
177
}
179
178
180
- impl < ' q > SerializeValue for ScyllaDBArgument < ' q > {
179
+ impl SerializeValue for ScyllaDBArgument {
181
180
fn serialize < ' b > (
182
181
& self ,
183
182
typ : & ColumnType ,
@@ -199,10 +198,9 @@ impl<'q> SerializeValue for ScyllaDBArgument<'q> {
199
198
Self :: FloatArray ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
200
199
Self :: Double ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
201
200
Self :: DoubleArray ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
202
- Self :: Text ( value) => <_ as SerializeValue >:: serialize ( & & * * value, typ, writer) ,
201
+ Self :: Text ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
203
202
Self :: TextArray ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
204
- Self :: TextRefArray ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
205
- Self :: Blob ( value) => <_ as SerializeValue >:: serialize ( & & * * value, typ, writer) ,
203
+ Self :: Blob ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
206
204
Self :: Uuid ( uuid) => <_ as SerializeValue >:: serialize ( uuid, typ, writer) ,
207
205
Self :: UuidArray ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
208
206
Self :: Timeuuid ( timeuuid) => <_ as SerializeValue >:: serialize ( timeuuid, typ, writer) ,
@@ -251,29 +249,29 @@ impl<'q> SerializeValue for ScyllaDBArgument<'q> {
251
249
Self :: ChronoNaiveDateArray ( value) => {
252
250
<_ as SerializeValue >:: serialize ( value, typ, writer)
253
251
}
254
- Self :: Tuple ( dynamic ) => <_ as SerializeValue >:: serialize ( dynamic , typ, writer) ,
252
+ Self :: Tuple ( value ) => <_ as SerializeValue >:: serialize ( value , typ, writer) ,
255
253
Self :: UserDefinedType ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
256
254
Self :: UserDefinedTypeArray ( value) => {
257
255
<_ as SerializeValue >:: serialize ( value, typ, writer)
258
256
}
259
- Self :: TextTextMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
260
- Self :: TextBooleanMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
261
- Self :: TextTinyIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
262
- Self :: TextSmallIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
263
- Self :: TextIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
264
- Self :: TextBigIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
265
- Self :: TextFloatMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
266
- Self :: TextDoubleMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
267
- Self :: TextUuidMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
268
- Self :: UuidTextMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
269
- Self :: UuidBooleanMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
270
- Self :: UuidTinyIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
271
- Self :: UuidSmallIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
272
- Self :: UuidIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
273
- Self :: UuidBigIntMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
274
- Self :: UuidFloatMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
275
- Self :: UuidDoubleMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
276
- Self :: UuidUuidMap ( value) => <_ as SerializeValue >:: serialize ( & * * value, typ, writer) ,
257
+ Self :: TextTextMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
258
+ Self :: TextBooleanMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
259
+ Self :: TextTinyIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
260
+ Self :: TextSmallIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
261
+ Self :: TextIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
262
+ Self :: TextBigIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
263
+ Self :: TextFloatMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
264
+ Self :: TextDoubleMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
265
+ Self :: TextUuidMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
266
+ Self :: UuidTextMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
267
+ Self :: UuidBooleanMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
268
+ Self :: UuidTinyIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
269
+ Self :: UuidSmallIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
270
+ Self :: UuidIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
271
+ Self :: UuidBigIntMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
272
+ Self :: UuidFloatMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
273
+ Self :: UuidDoubleMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
274
+ Self :: UuidUuidMap ( value) => <_ as SerializeValue >:: serialize ( value, typ, writer) ,
277
275
}
278
276
}
279
277
}
0 commit comments