Skip to content

Commit a800b86

Browse files
committed
Shrink query_opt/query_one codegen size very slightly
1 parent e8f44ec commit a800b86

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

tokio-postgres/src/client.rs

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -274,19 +274,9 @@ impl Client {
274274
where
275275
T: ?Sized + ToStatement,
276276
{
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))
290280
}
291281

292282
/// Executes a statements which returns zero or one rows, returning it.
@@ -310,16 +300,17 @@ impl Client {
310300
let stream = self.query_raw(statement, slice_iter(params)).await?;
311301
pin_mut!(stream);
312302

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+
}
317309

318-
if stream.try_next().await?.is_some() {
319-
return Err(Error::row_count());
310+
first = Some(row);
320311
}
321312

322-
Ok(Some(row))
313+
Ok(first)
323314
}
324315

325316
/// The maximally flexible version of [`query`].

0 commit comments

Comments
 (0)