File tree Expand file tree Collapse file tree 1 file changed +11
-20
lines changed Expand file tree Collapse file tree 1 file changed +11
-20
lines changed Original file line number Diff line number Diff line change @@ -274,19 +274,9 @@ impl Client {
274
274
where
275
275
T : ?Sized + ToStatement ,
276
276
{
277
- let stream = self . query_raw ( statement, slice_iter ( params) ) . await ?;
278
- pin_mut ! ( stream) ;
279
-
280
- let row = match stream. try_next ( ) . await ? {
281
- Some ( row) => row,
282
- None => return Err ( Error :: row_count ( ) ) ,
283
- } ;
284
-
285
- if stream. try_next ( ) . await ?. is_some ( ) {
286
- return Err ( Error :: row_count ( ) ) ;
287
- }
288
-
289
- Ok ( row)
277
+ self . query_opt ( statement, params)
278
+ . await
279
+ . and_then ( |res| res. ok_or_else ( Error :: row_count) )
290
280
}
291
281
292
282
/// Executes a statements which returns zero or one rows, returning it.
@@ -310,16 +300,17 @@ impl Client {
310
300
let stream = self . query_raw ( statement, slice_iter ( params) ) . await ?;
311
301
pin_mut ! ( stream) ;
312
302
313
- let row = match stream. try_next ( ) . await ? {
314
- Some ( row) => row,
315
- None => return Ok ( None ) ,
316
- } ;
303
+ let mut first = None ;
304
+
305
+ while let Some ( row) = stream. try_next ( ) . await ? {
306
+ if first. is_some ( ) {
307
+ return Err ( Error :: row_count ( ) ) ;
308
+ }
317
309
318
- if stream. try_next ( ) . await ?. is_some ( ) {
319
- return Err ( Error :: row_count ( ) ) ;
310
+ first = Some ( row) ;
320
311
}
321
312
322
- Ok ( Some ( row ) )
313
+ Ok ( first )
323
314
}
324
315
325
316
/// The maximally flexible version of [`query`].
You can’t perform that action at this time.
0 commit comments