diff --git a/src/directory/mmap_directory.rs b/src/directory/mmap_directory.rs index d6a6cdbd3..e4e595fec 100644 --- a/src/directory/mmap_directory.rs +++ b/src/directory/mmap_directory.rs @@ -99,34 +99,29 @@ impl MmapDirectory { /// This Write wraps a File, but has the specificity of /// call `sync_all` on flush. -struct SafeFileWriter { - writer: BufWriter, -} +struct SafeFileWriter(File); impl SafeFileWriter { fn new(file: File) -> SafeFileWriter { - SafeFileWriter { - writer: BufWriter::new(file), - } + SafeFileWriter(file) } - } impl Write for SafeFileWriter { fn write(&mut self, buf: &[u8]) -> io::Result { - self.writer.write(buf) + self.0.write(buf) } fn flush(&mut self) -> io::Result<()> { - try!(self.writer.flush()); - self.writer.get_ref().sync_all() + try!(self.0.flush()); + self.0.sync_all() } } impl Seek for SafeFileWriter { fn seek(&mut self, pos: SeekFrom) -> io::Result { - self.writer.seek(pos) + self.0.seek(pos) } } @@ -204,7 +199,7 @@ impl Directory for MmapDirectory { try!(self.sync_directory()); let writer = SafeFileWriter::new(file); - Ok(Box::new(writer)) + Ok(BufWriter::new(Box::new(writer))) } fn delete(&self, path: &Path) -> result::Result<(), FileError> { diff --git a/src/directory/mod.rs b/src/directory/mod.rs index 6716d0193..d6873ecc8 100644 --- a/src/directory/mod.rs +++ b/src/directory/mod.rs @@ -7,8 +7,9 @@ mod shared_vec_slice; /// Errors specific to the directory module. pub mod error; -use std::io::{Seek, Write}; +use std::io::{Write, Seek}; +use std::io::BufWriter; pub use self::read_only_source::ReadOnlySource; pub use self::directory::Directory; pub use self::ram_directory::RAMDirectory; @@ -22,14 +23,14 @@ impl SeekableWrite for T {} /// /// `WritePtr` are required to implement both Write /// and Seek. -pub type WritePtr = Box; +pub type WritePtr = BufWriter>; #[cfg(test)] mod tests { use super::*; - use std::path::Path; - use std::io::SeekFrom; + use std::path::Path; + use std::io::{Write, Seek, SeekFrom}; lazy_static! { static ref TEST_PATH: &'static Path = Path::new("some_path_for_test"); diff --git a/src/directory/ram_directory.rs b/src/directory/ram_directory.rs index 30e131237..6ced0ae7e 100644 --- a/src/directory/ram_directory.rs +++ b/src/directory/ram_directory.rs @@ -1,7 +1,6 @@ use std::collections::HashMap; use std::fmt; -use std::io; -use std::io::{Cursor, Write, Seek, SeekFrom}; +use std::io::{self, BufWriter, Cursor, Write, Seek, SeekFrom}; use std::path::{Path, PathBuf}; use std::result; use std::sync::{Arc, RwLock}; @@ -173,7 +172,7 @@ impl Directory for RAMDirectory { Err(OpenWriteError::FileAlreadyExists(path_buf)) } else { - Ok(Box::new(vec_writer)) + Ok(BufWriter::new(Box::new(vec_writer))) } } diff --git a/src/fastfield/serializer.rs b/src/fastfield/serializer.rs index 7c71661d7..f9af432b3 100644 --- a/src/fastfield/serializer.rs +++ b/src/fastfield/serializer.rs @@ -1,8 +1,7 @@ use common::BinarySerializable; use directory::WritePtr; use schema::Field; -use std::io; -use std::io::{SeekFrom, Write}; +use std::io::{self, SeekFrom, Seek, Write}; use super::compute_num_bits; diff --git a/src/postings/serializer.rs b/src/postings/serializer.rs index f1724ad46..5fb7c9505 100644 --- a/src/postings/serializer.rs +++ b/src/postings/serializer.rs @@ -13,6 +13,7 @@ use DocId; use core::Segment; use std::io; use core::SegmentComponent; +use std::io::Write; use common::VInt; use common::BinarySerializable;