Struct seek_bufread::BufReader
source · pub struct BufReader<R> { /* private fields */ }
Expand description
The BufReader
struct adds buffering to any reader.
It can be excessively inefficient to work directly with a Read
instance.
For example, every call to read
on TcpStream
results in a system call.
A BufReader
performs large, infrequent reads on the underlying Read
and maintains an in-memory buffer of the results.
Examples
use std::io::prelude::*;
use std::fs::File;
use seek_bufread::BufReader;
let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::new(f);
let mut line = String::new();
let len = try!(reader.read_line(&mut line));
println!("First line is {} bytes long", len);
Implementations
sourceimpl<R: Read + Seek> BufReader<R>
impl<R: Read + Seek> BufReader<R>
sourcepub fn new(inner: R) -> BufReader<R>ⓘNotable traits for BufReader<R>impl<R: Read> Read for BufReader<R>
pub fn new(inner: R) -> BufReader<R>ⓘNotable traits for BufReader<R>impl<R: Read> Read for BufReader<R>
Creates a new BufReader
with a default buffer capacity (8192 bytes).
Examples
use std::fs::File;
use seek_bufread::BufReader;
let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::new(f);
sourcepub fn with_capacity(cap: usize, inner: R) -> BufReader<R>ⓘNotable traits for BufReader<R>impl<R: Read> Read for BufReader<R>
pub fn with_capacity(cap: usize, inner: R) -> BufReader<R>ⓘNotable traits for BufReader<R>impl<R: Read> Read for BufReader<R>
Creates a new BufReader
with the specified buffer capacity.
Examples
Creating a buffer with ten bytes of capacity:
use std::fs::File;
use seek_bufread::BufReader;
let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::with_capacity(10, f);
sourcepub fn available(&self) -> usize
pub fn available(&self) -> usize
Returns the current number of remaining bytes available in the buffer.
sourcepub fn into_inner(self) -> Result<R>
pub fn into_inner(self) -> Result<R>
Consumes self
, synchronizes the inner reader position and returns the inner reader.
Trait Implementations
sourceimpl<R: Read> BufRead for BufReader<R>
impl<R: Read> BufRead for BufReader<R>
sourcefn fill_buf(&mut self) -> Result<&[u8]>
fn fill_buf(&mut self) -> Result<&[u8]>
sourcefn consume(&mut self, amt: usize)
fn consume(&mut self, amt: usize)
amt
bytes have been consumed from the buffer,
so they should no longer be returned in calls to read
. Read moresourcefn has_data_left(&mut self) -> Result<bool, Error>
fn has_data_left(&mut self) -> Result<bool, Error>
buf_read_has_data_left
)Read
has any data left to be read. Read more1.0.0 · sourcefn read_until(
&mut self,
byte: u8,
buf: &mut Vec<u8, Global>
) -> Result<usize, Error>
fn read_until(
&mut self,
byte: u8,
buf: &mut Vec<u8, Global>
) -> Result<usize, Error>
1.0.0 · sourcefn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
0xA
byte) is reached, and append
them to the provided buffer. You do not need to clear the buffer before
appending. Read moresourceimpl<R: Read> Read for BufReader<R>
impl<R: Read> Read for BufReader<R>
sourcefn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Reads the next available bytes from buffer or inner stream. Doesn’t guarantee the whole buffer is filled. Returns number of read bytes.
1.36.0 · sourcefn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moresourcefn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · sourcefn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
buf
. Read more1.0.0 · sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf
. Read more1.6.0 · sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moresourcefn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)sourcefn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · sourcefn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read moresourceimpl<R: Read + Seek> Seek for BufReader<R>
impl<R: Read + Seek> Seek for BufReader<R>
sourcefn seek(&mut self, pos: SeekFrom) -> Result<u64>
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in the buffer or the underlying reader.
The position used for seeking with SeekFrom::Current(_)
is the
current position of the underlying reader plus the current position
in the internal buffer.
Calling .unwrap()
immediately after a seek doesn’t guarantee
the underlying reader at the same position!
See std::io::Seek
for more details.