@@ -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