Skip to content

Commit 1fa5941

Browse files
committed
Use Vec instead of MemWriter
1 parent ec6e242 commit 1fa5941

File tree

3 files changed

+21
-31
lines changed

3 files changed

+21
-31
lines changed

src/lib.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ use openssl::ssl::SslContext;
7272
use serialize::hex::ToHex;
7373
use std::cell::{Cell, RefCell};
7474
use std::collections::{RingBuf, HashMap};
75-
use std::io::{BufferedStream, IoResult, MemWriter};
75+
use std::io::{BufferedStream, IoResult};
7676
use std::io::net::ip::Port;
7777
use std::mem;
7878
use std::fmt;
@@ -517,21 +517,21 @@ impl InnerConnection {
517517

518518
fn prepare_copy_in<'a>(&mut self, table: &str, rows: &[&str], conn: &'a Connection)
519519
-> Result<CopyInStatement<'a>> {
520-
let mut query = MemWriter::new();
520+
let mut query = vec![];
521521
let _ = write!(query, "SELECT ");
522522
let _ = util::comma_join(&mut query, rows.iter().map(|&e| e));
523523
let _ = write!(query, " FROM {}", table);
524-
let query = String::from_utf8(query.unwrap()).unwrap();
524+
let query = String::from_utf8(query).unwrap();
525525
let (stmt_name, _, result_desc) = try!(self.raw_prepare(query[]));
526526

527527
let column_types = result_desc.iter().map(|desc| desc.ty.clone()).collect();
528528
try!(self.close_statement(stmt_name[]));
529529

530-
let mut query = MemWriter::new();
530+
let mut query = vec![];
531531
let _ = write!(query, "COPY {} (", table);
532532
let _ = util::comma_join(&mut query, rows.iter().map(|&e| e));
533533
let _ = write!(query, ") FROM STDIN WITH (FORMAT binary)");
534-
let query = String::from_utf8(query.unwrap()).unwrap();
534+
let query = String::from_utf8(query).unwrap();
535535
let (stmt_name, _, _) = try!(self.raw_prepare(query[]));
536536

537537
Ok(CopyInStatement {
@@ -1549,7 +1549,7 @@ impl<'a> CopyInStatement<'a> {
15491549
}
15501550
}
15511551

1552-
let mut buf = MemWriter::new();
1552+
let mut buf = vec![];
15531553
let _ = buf.write(b"PGCOPY\n\xff\r\n\x00");
15541554
let _ = buf.write_be_i32(0);
15551555
let _ = buf.write_be_i32(0);
@@ -1590,19 +1590,17 @@ impl<'a> CopyInStatement<'a> {
15901590
}
15911591
}
15921592

1593-
let mut data = buf.unwrap();
15941593
try_desync!(conn, conn.stream.write_message(
15951594
&CopyData {
1596-
data: data[]
1595+
data: buf[]
15971596
}));
1598-
data.clear();
1599-
buf = MemWriter::from_vec(data);
1597+
buf.clear();
16001598
}
16011599

16021600
let _ = buf.write_be_i16(-1);
16031601
try!(conn.write_messages(&[
16041602
CopyData {
1605-
data: buf.unwrap()[],
1603+
data: buf[],
16061604
},
16071605
CopyDone,
16081606
Sync]));

src/message.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::io::{IoResult, IoError, OtherIoError, MemWriter, MemReader};
1+
use std::io::{IoResult, IoError, OtherIoError, MemReader};
22
use std::mem;
33

44
use types::Oid;
@@ -149,7 +149,7 @@ pub trait WriteMessage {
149149

150150
impl<W: Writer> WriteMessage for W {
151151
fn write_message(&mut self, message: &FrontendMessage) -> IoResult<()> {
152-
let mut buf = MemWriter::new();
152+
let mut buf = vec![];
153153
let mut ident = None;
154154

155155
match *message {
@@ -250,7 +250,6 @@ impl<W: Writer> WriteMessage for W {
250250
try!(self.write_u8(ident));
251251
}
252252

253-
let buf = buf.unwrap();
254253
// add size of length value
255254
try!(self.write_be_i32((buf.len() + mem::size_of::<i32>()) as i32));
256255
try!(self.write(buf[]));

src/types/mod.rs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Traits dealing with Postgres data types
22
use serialize::json;
33
use std::collections::HashMap;
4-
use std::io::{ByRefReader, MemWriter, BufReader};
4+
use std::io::{ByRefReader, BufReader};
55

66
use self::Type::*;
77
use Result;
@@ -178,7 +178,6 @@ macro_rules! to_range_impl(
178178
($t:ty) => (
179179
impl ::types::RawToSql for ::types::range::Range<$t> {
180180
fn raw_to_sql<W: Writer>(&self, buf: &mut W) -> Result<()> {
181-
use std::io::MemWriter;
182181
use types::{RANGE_EMPTY, RANGE_LOWER_UNBOUNDED, RANGE_LOWER_INCLUSIVE,
183182
RANGE_UPPER_UNBOUNDED, RANGE_UPPER_INCLUSIVE};
184183
use types::range::{BoundType, RangeBound};
@@ -207,19 +206,17 @@ macro_rules! to_range_impl(
207206

208207
match self.lower() {
209208
Some(bound) => {
210-
let mut inner_buf = MemWriter::new();
209+
let mut inner_buf = vec![];
211210
try!(bound.value.raw_to_sql(&mut inner_buf));
212-
let inner_buf = inner_buf.unwrap();
213211
try!(buf.write_be_i32(inner_buf.len() as i32));
214212
try!(buf.write(inner_buf[]));
215213
}
216214
None => {}
217215
}
218216
match self.upper() {
219217
Some(bound) => {
220-
let mut inner_buf = MemWriter::new();
218+
let mut inner_buf = vec![];
221219
try!(bound.value.raw_to_sql(&mut inner_buf));
222-
let inner_buf = inner_buf.unwrap();
223220
try!(buf.write_be_i32(inner_buf.len() as i32));
224221
try!(buf.write(inner_buf[]));
225222
}
@@ -268,13 +265,11 @@ macro_rules! to_raw_to_impl(
268265
$(#[$a])*
269266
impl ::types::ToSql for $t {
270267
fn to_sql(&self, ty: &Type) -> Result<Option<Vec<u8>>> {
271-
use std::io::MemWriter;
272-
273268
check_types!($($oid)|+, ty)
274269

275-
let mut writer = MemWriter::new();
270+
let mut writer = vec![];
276271
try!(self.raw_to_sql(&mut writer));
277-
Ok(Some(writer.unwrap()))
272+
Ok(Some(writer))
278273
}
279274
}
280275

@@ -287,11 +282,10 @@ macro_rules! to_array_impl(
287282
$(#[$a])*
288283
impl ::types::ToSql for ::types::array::ArrayBase<Option<$t>> {
289284
fn to_sql(&self, ty: &Type) -> Result<Option<Vec<u8>>> {
290-
use std::io::MemWriter;
291285
use types::array::Array;
292286

293287
check_types!($($oid)|+, ty)
294-
let mut buf = MemWriter::new();
288+
let mut buf = vec![];
295289

296290
try!(buf.write_be_i32(self.dimension_info().len() as i32));
297291
try!(buf.write_be_i32(1));
@@ -305,17 +299,16 @@ macro_rules! to_array_impl(
305299
for v in self.values() {
306300
match *v {
307301
Some(ref val) => {
308-
let mut inner_buf = MemWriter::new();
302+
let mut inner_buf = vec![];
309303
try!(val.raw_to_sql(&mut inner_buf));
310-
let inner_buf = inner_buf.unwrap();
311304
try!(buf.write_be_i32(inner_buf.len() as i32));
312305
try!(buf.write(inner_buf[]));
313306
}
314307
None => try!(buf.write_be_i32(-1))
315308
}
316309
}
317310

318-
Ok(Some(buf.unwrap()))
311+
Ok(Some(buf))
319312
}
320313
}
321314

@@ -740,7 +733,7 @@ impl ToSql for HashMap<String, Option<String>> {
740733
_ => return Err(PgWrongType(ty.clone()))
741734
}
742735

743-
let mut buf = MemWriter::new();
736+
let mut buf = vec![];
744737

745738
try!(buf.write_be_i32(self.len() as i32));
746739

@@ -757,7 +750,7 @@ impl ToSql for HashMap<String, Option<String>> {
757750
}
758751
}
759752

760-
Ok(Some(buf.unwrap()))
753+
Ok(Some(buf))
761754
}
762755
}
763756

0 commit comments

Comments
 (0)