@@ -108,10 +108,10 @@ macro_rules! impl_decode_for_smartpointer {
108
108
impl <' r, DB > Decode <' r, DB > for $smart_pointer<[ u8 ] >
109
109
where
110
110
DB : Database ,
111
- & ' r [ u8 ] : Decode <' r, DB >,
111
+ Vec < u8 > : Decode <' r, DB >,
112
112
{
113
113
fn decode( value: <DB as Database >:: ValueRef <' r>) -> Result <Self , BoxDynError > {
114
- let ref_str = <& [ u8 ] as Decode <DB >>:: decode( value) ?;
114
+ let ref_str = <Vec < u8 > as Decode <DB >>:: decode( value) ?;
115
115
Ok ( ref_str. into( ) )
116
116
}
117
117
}
@@ -123,36 +123,33 @@ impl_decode_for_smartpointer!(Box);
123
123
impl_decode_for_smartpointer ! ( Rc ) ;
124
124
125
125
// implement `Decode` for Cow<T> for all SQL types
126
- impl < ' r , DB , T > Decode < ' r , DB > for Cow < ' _ , T >
126
+ impl < ' r , ' a , DB , T > Decode < ' r , DB > for Cow < ' a , T >
127
127
where
128
128
DB : Database ,
129
129
T : ToOwned ,
130
130
<T as ToOwned >:: Owned : Decode < ' r , DB > ,
131
131
{
132
132
fn decode ( value : <DB as Database >:: ValueRef < ' r > ) -> Result < Self , BoxDynError > {
133
- let owned = <<T as ToOwned >:: Owned as Decode < DB > >:: decode ( value) ?;
134
- Ok ( Cow :: Owned ( owned) )
133
+ <<T as ToOwned >:: Owned as Decode < DB > >:: decode ( value) . map ( Cow :: Owned )
135
134
}
136
135
}
137
136
138
- impl < ' r , DB > Decode < ' r , DB > for Cow < ' r , str >
137
+ impl < ' r , ' a , DB > Decode < ' r , DB > for Cow < ' a , str >
139
138
where
140
139
DB : Database ,
141
- & ' r str : Decode < ' r , DB > ,
140
+ String : Decode < ' r , DB > ,
142
141
{
143
142
fn decode ( value : <DB as Database >:: ValueRef < ' r > ) -> Result < Self , BoxDynError > {
144
- let borrowed = <& str as Decode < DB > >:: decode ( value) ?;
145
- Ok ( Cow :: Borrowed ( borrowed) )
143
+ <String as Decode < DB > >:: decode ( value) . map ( Cow :: Owned )
146
144
}
147
145
}
148
146
149
- impl < ' r , DB > Decode < ' r , DB > for Cow < ' r , [ u8 ] >
147
+ impl < ' r , ' a , DB > Decode < ' r , DB > for Cow < ' a , [ u8 ] >
150
148
where
151
149
DB : Database ,
152
- & ' r [ u8 ] : Decode < ' r , DB > ,
150
+ Vec < u8 > : Decode < ' r , DB > ,
153
151
{
154
152
fn decode ( value : <DB as Database >:: ValueRef < ' r > ) -> Result < Self , BoxDynError > {
155
- let borrowed = <& [ u8 ] as Decode < DB > >:: decode ( value) ?;
156
- Ok ( Cow :: Borrowed ( borrowed) )
153
+ <Vec < u8 > as Decode < DB > >:: decode ( value) . map ( Cow :: Owned )
157
154
}
158
155
}
0 commit comments