diff --git a/src/lib.rs b/src/lib.rs
index edd1ac5c..4f3e7118 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -79,7 +79,7 @@ extern crate log;
extern crate phf;
extern crate postgres_protocol;
-use fallible_iterator::FallibleIterator;
+use fallible_iterator::{FallibleIterator, FromFallibleIterator};
use std::cell::{Cell, RefCell};
use std::collections::{VecDeque, HashMap};
use std::fmt;
@@ -504,14 +504,7 @@ impl InnerConnection {
more_rows = true;
break;
}
- backend::Message::DataRow(body) => {
- let mut row = RowData::new();
- let mut it = body.values();
- while let Some(value) = try!(it.next()) {
- row.push(value);
- }
- consumer(row);
- }
+ backend::Message::DataRow(body) => consumer(try!(body.values().collect())),
backend::Message::ErrorResponse(body) => {
try!(self.wait_for_ready());
return DbError::new(&mut body.fields());
@@ -1338,26 +1331,32 @@ struct RowData {
indices: Vec