@@ -104,17 +104,30 @@ fn expand_derive_from_row_struct(
104
104
. push ( parse_quote ! ( #ty: :: sqlx:: decode:: Decode <#lifetime, R :: Database >) ) ;
105
105
predicates. push ( parse_quote ! ( #ty: :: sqlx:: types:: Type <R :: Database >) ) ;
106
106
107
- parse_quote ! ( row . try_get( #id_s) )
107
+ parse_quote ! ( __row . try_get( #id_s) )
108
108
}
109
109
// Flatten
110
110
( true , None , false ) => {
111
111
predicates. push ( parse_quote ! ( #ty: :: sqlx:: FromRow <#lifetime, R >) ) ;
112
- parse_quote ! ( <#ty as :: sqlx:: FromRow <#lifetime, R >>:: from_row( row ) )
112
+ parse_quote ! ( <#ty as :: sqlx:: FromRow <#lifetime, R >>:: from_row( __row ) )
113
113
}
114
114
// Flatten + Try from
115
115
( true , Some ( try_from) , false ) => {
116
116
predicates. push ( parse_quote ! ( #try_from: :: sqlx:: FromRow <#lifetime, R >) ) ;
117
- parse_quote ! ( <#try_from as :: sqlx:: FromRow <#lifetime, R >>:: from_row( row) . and_then( |v| <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v) . map_err( |e| :: sqlx:: Error :: ColumnNotFound ( "FromRow: try_from failed" . to_string( ) ) ) ) )
117
+ parse_quote ! (
118
+ <#try_from as :: sqlx:: FromRow <#lifetime, R >>:: from_row( __row)
119
+ . and_then( |v| {
120
+ <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v)
121
+ . map_err( |e| {
122
+ // Triggers a lint warning if `TryFrom::Err = Infallible`
123
+ #[ allow( unreachable_code) ]
124
+ :: sqlx:: Error :: ColumnDecode {
125
+ index: #id_s. to_string( ) ,
126
+ source: sqlx:: __spec_error!( e) ,
127
+ }
128
+ } )
129
+ } )
130
+ )
118
131
}
119
132
// Flatten + Json
120
133
( true , _, true ) => {
@@ -126,7 +139,20 @@ fn expand_derive_from_row_struct(
126
139
. push ( parse_quote ! ( #try_from: :: sqlx:: decode:: Decode <#lifetime, R :: Database >) ) ;
127
140
predicates. push ( parse_quote ! ( #try_from: :: sqlx:: types:: Type <R :: Database >) ) ;
128
141
129
- parse_quote ! ( row. try_get( #id_s) . and_then( |v| <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v) . map_err( |e| :: sqlx:: Error :: ColumnNotFound ( "FromRow: try_from failed" . to_string( ) ) ) ) )
142
+ parse_quote ! (
143
+ __row. try_get( #id_s)
144
+ . and_then( |v| {
145
+ <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v)
146
+ . map_err( |e| {
147
+ // Triggers a lint warning if `TryFrom::Err = Infallible`
148
+ #[ allow( unreachable_code) ]
149
+ :: sqlx:: Error :: ColumnDecode {
150
+ index: #id_s. to_string( ) ,
151
+ source: sqlx:: __spec_error!( e) ,
152
+ }
153
+ } )
154
+ } )
155
+ )
130
156
}
131
157
// Try from + Json
132
158
( false , Some ( try_from) , true ) => {
@@ -135,10 +161,18 @@ fn expand_derive_from_row_struct(
135
161
predicates. push ( parse_quote ! ( :: sqlx:: types:: Json <#try_from>: :: sqlx:: types:: Type <R :: Database >) ) ;
136
162
137
163
parse_quote ! (
138
- row. try_get:: <:: sqlx:: types:: Json <_>, _>( #id_s) . and_then( |v|
139
- <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v. 0 )
140
- . map_err( |e| :: sqlx:: Error :: ColumnNotFound ( "FromRow: try_from failed" . to_string( ) ) )
141
- )
164
+ __row. try_get:: <:: sqlx:: types:: Json <_>, _>( #id_s)
165
+ . and_then( |v| {
166
+ <#ty as :: std:: convert:: TryFrom :: <#try_from>>:: try_from( v. 0 )
167
+ . map_err( |e| {
168
+ // Triggers a lint warning if `TryFrom::Err = Infallible`
169
+ #[ allow( unreachable_code) ]
170
+ :: sqlx:: Error :: ColumnDecode {
171
+ index: #id_s. to_string( ) ,
172
+ source: sqlx:: __spec_error!( e) ,
173
+ }
174
+ } )
175
+ } )
142
176
)
143
177
} ,
144
178
// Json
@@ -147,24 +181,28 @@ fn expand_derive_from_row_struct(
147
181
. push ( parse_quote ! ( :: sqlx:: types:: Json <#ty>: :: sqlx:: decode:: Decode <#lifetime, R :: Database >) ) ;
148
182
predicates. push ( parse_quote ! ( :: sqlx:: types:: Json <#ty>: :: sqlx:: types:: Type <R :: Database >) ) ;
149
183
150
- parse_quote ! ( row . try_get:: <:: sqlx:: types:: Json <_>, _>( #id_s) . map( |x| x. 0 ) )
184
+ parse_quote ! ( __row . try_get:: <:: sqlx:: types:: Json <_>, _>( #id_s) . map( |x| x. 0 ) )
151
185
} ,
152
186
} ;
153
187
154
188
if attributes. default {
155
- Some ( parse_quote ! ( let #id: #ty = #expr. or_else( |e| match e {
156
- :: sqlx:: Error :: ColumnNotFound ( _) => {
157
- :: std:: result:: Result :: Ok ( Default :: default ( ) )
158
- } ,
159
- e => :: std:: result:: Result :: Err ( e)
160
- } ) ?; ) )
189
+ Some ( parse_quote ! (
190
+ let #id: #ty = #expr. or_else( |e| match e {
191
+ :: sqlx:: Error :: ColumnNotFound ( _) => {
192
+ :: std:: result:: Result :: Ok ( Default :: default ( ) )
193
+ } ,
194
+ e => :: std:: result:: Result :: Err ( e)
195
+ } ) ?;
196
+ ) )
161
197
} else if container_attributes. default {
162
- Some ( parse_quote ! ( let #id: #ty = #expr. or_else( |e| match e {
163
- :: sqlx:: Error :: ColumnNotFound ( _) => {
164
- :: std:: result:: Result :: Ok ( __default. #id)
165
- } ,
166
- e => :: std:: result:: Result :: Err ( e)
167
- } ) ?; ) )
198
+ Some ( parse_quote ! (
199
+ let #id: #ty = #expr. or_else( |e| match e {
200
+ :: sqlx:: Error :: ColumnNotFound ( _) => {
201
+ :: std:: result:: Result :: Ok ( __default. #id)
202
+ } ,
203
+ e => :: std:: result:: Result :: Err ( e)
204
+ } ) ?;
205
+ ) )
168
206
} else {
169
207
Some ( parse_quote ! (
170
208
let #id: #ty = #expr?;
@@ -180,7 +218,7 @@ fn expand_derive_from_row_struct(
180
218
Ok ( quote ! (
181
219
#[ automatically_derived]
182
220
impl #impl_generics :: sqlx:: FromRow <#lifetime, R > for #ident #ty_generics #where_clause {
183
- fn from_row( row : & #lifetime R ) -> :: sqlx:: Result <Self > {
221
+ fn from_row( __row : & #lifetime R ) -> :: sqlx:: Result <Self > {
184
222
#default_instance
185
223
186
224
#( #reads) *
0 commit comments