Struct stack_buffer::StackBufReader [−][src]
pub struct StackBufReader<R, const N: usize> { /* fields omitted */ }
Expand description
The StackBufReader<N, R>
struct adds buffering to any reader.
See BufReader
for more details.
Examples
use std::io::prelude::*;
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f = File::open("log.txt")?;
let mut reader = StackBufReader::<_, 4096>::new(f);
let mut line = String::new();
let len = reader.read_line(&mut line)?;
println!("First line is {} bytes long", len);
Ok(())
}
Implementations
pub fn new(inner: R) -> StackBufReader<R, N>ⓘNotable traits for StackBufReader<R, N>impl<R: Read, const N: usize> Read for StackBufReader<R, N>
pub fn new(inner: R) -> StackBufReader<R, N>ⓘNotable traits for StackBufReader<R, N>impl<R: Read, const N: usize> Read for StackBufReader<R, N>
impl<R: Read, const N: usize> Read for StackBufReader<R, N>
Creates a new StackBufReader<R, N>
.
Examples
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f = File::open("log.txt")?;
let reader = StackBufReader::<_, 4096>::new(f);
Ok(())
}
Gets a reference to the underlying reader.
It is inadvisable to directly read from the underlying reader.
Examples
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f1 = File::open("log.txt")?;
let reader = StackBufReader::<_, 4096>::new(f1);
let f2 = reader.get_ref();
Ok(())
}
Gets a mutable reference to the underlying reader.
It is inadvisable to directly read from the underlying reader.
Examples
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f1 = File::open("log.txt")?;
let mut reader = StackBufReader::<_, 4096>::new(f1);
let f2 = reader.get_mut();
Ok(())
}
Returns a reference to the internally buffered data.
Unlike fill_buf
, this will not attempt to fill the buffer if it is empty.
Examples
use std::io::BufRead;
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f = File::open("log.txt")?;
let mut reader = StackBufReader::<_, 4096>::new(f);
assert!(reader.buffer().is_empty());
if reader.fill_buf()?.len() > 0 {
assert!(!reader.buffer().is_empty());
}
Ok(())
}
Returns the number of bytes the internal buffer can hold at once.
Examples
use std::io::BufRead;
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f = File::open("log.txt")?;
let mut reader = StackBufReader::<_, 4096>::new(f);
let capacity = reader.capacity();
let buffer = reader.fill_buf()?;
assert!(buffer.len() <= capacity);
Ok(())
}
Unwraps this BufReader<R>
, returning the underlying reader.
Note that any leftover data in the internal buffer is lost. Therefore, a following read from the underlying reader may lead to data loss.
Examples
use std::fs::File;
use stack_buffer::StackBufReader;
fn main() -> std::io::Result<()> {
let f1 = File::open("log.txt")?;
let reader = StackBufReader::<_, 4096>::new(f1);
let f2 = reader.into_inner();
Ok(())
}
Seeks relative to the current position. If the new position lies within the buffer, the buffer will not be flushed, allowing for more efficient seeks. This method does not return the location of the underlying reader, so the caller must track this information themselves if it is required.
Trait Implementations
Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Tells this buffer that amt
bytes have been consumed from the buffer,
so they should no longer be returned in calls to read
. Read more
buf_read_has_data_left
)Check if the underlying Read
has any data left to be read. Read more
Read all bytes into buf
until the delimiter byte
or EOF is reached. Read more
Read all bytes until a newline (the 0xA
byte) is reached, and append
them to the provided buffer. Read more
Returns an iterator over the contents of this reader split on the byte
byte
. Read more
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Like read
, except that it reads into a slice of buffers. Read more
can_vector
)Determines if this Read
er has an efficient read_vectored
implementation. Read more
Read all bytes until EOF in this source, placing them into buf
. Read more
Read all bytes until EOF in this source, appending them to buf
. Read more
Read the exact number of bytes required to fill buf
. Read more
read_buf
)Pull some bytes from this source into the specified buffer. Read more
read_buf
)Read the exact number of bytes required to fill buf
. Read more
Creates a “by reference” adaptor for this instance of Read
. Read more
Creates an adapter which will chain this stream with another. Read more
Seek to an offset, in bytes, in the underlying reader.
See BufReader::seek
for more details.
Returns the current seek position from the start of the stream.
See BufReader::stream_position
for more details.
Example
use std::{
io::{self, BufRead, Seek},
fs::File,
};
use stack_buffer::StackBufReader;
fn main() -> io::Result<()> {
let mut f = StackBufReader::<_, 4096>::new(File::open("foo.txt")?);
let before = f.stream_position()?;
f.read_line(&mut String::new())?;
let after = f.stream_position()?;
println!("The first line was {} bytes long", after - before);
Ok(())
}