[][src]Struct ensured_bufreader::EnsuredBufReader

pub struct EnsuredBufReader<R, B> where
    R: Read,
    B: AsRef<[u8]> + AsMut<[u8]>, 
{ /* fields omitted */ }

A BufReader that ensures ensured bytes in buffer.

EnsuredBufReader keeps ensured bytes in buffer if it can read from underlying reader. To fetch bytes into buffer, call fill_buf().

Methods

impl<R: Read> EnsuredBufReader<R, Vec<u8>>[src]

Important traits for EnsuredBufReader<R, B>
pub fn new(inner: R) -> EnsuredBufReader<R, Vec<u8>>[src]

Creates a new EnsuredBufReader with a default capacity (DEFAULT_BUFFER_SIZE) and a default ensured size (DEFAULT_ENSURED_BYTES).

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let r = EnsuredBufReader::new(f);
    Ok(())
}

Important traits for EnsuredBufReader<R, B>
pub fn with_capacity_and_ensured_size(
    capacity: usize,
    ensured_size: usize,
    inner: R
) -> EnsuredBufReader<R, Vec<u8>>
[src]

Creates a new EnsuredBufReader with a specified capacity and ensured_size.

capacity must be larger than or equal to ensured_size. ensured_size must be positive.

Panics

Panics if capacity is smaller than ensured_size. Panics if ensured_size is 0.

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let r = EnsuredBufReader::with_capacity_and_ensured_size(1024, 32, f);
    Ok(())
}

impl<'_, R: Read> EnsuredBufReader<R, &'_ mut [u8]>[src]

Important traits for EnsuredBufReader<R, B>
pub fn from_mut_ref(buf: &mut [u8], inner: R) -> EnsuredBufReader<R, &mut [u8]>[src]

Creates a new EnsuredBufReader with given buffer.

Buffer length must be larger than or equal to DEFAULT_ENSURED_BYTES.

Panics

Panics if buffer is smaller than DEFAULT_ENSURED_BYTES.

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let mut buf = [0u8; 1024];
    let r = EnsuredBufReader::from_mut_ref(&mut buf, f);
    Ok(())
}

Important traits for EnsuredBufReader<R, B>
pub fn from_mut_ref_and_ensured_size(
    buf: &mut [u8],
    ensured_size: usize,
    inner: R
) -> EnsuredBufReader<R, &mut [u8]>
[src]

Creates a new EnsuredBufReader with given buffer and a specified ensured_size.

Buffer length must be larger than or equal to ensured_size. ensured_size must be positive.

Panics

Panics if buffer is smaller than ensured_size. Panics if ensured_size is 0.

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let mut buf = [0u8; 1024];
    let r = EnsuredBufReader::from_mut_ref_and_ensured_size(&mut buf, 32, f);
    Ok(())
}

impl<R: Read, B: AsRef<[u8]> + AsMut<[u8]>> EnsuredBufReader<R, B>[src]

Important traits for EnsuredBufReader<R, B>
pub fn from_buffer(buf: B, inner: R) -> EnsuredBufReader<R, B>[src]

Creates a new EnsuredBufReader with given buffer.

Buffer length must be larger than or equal to DEFAULT_ENSURED_BYTES.

Panics

Panics if buffer is smaller than DEFAULT_ENSURED_BYTES.

Important traits for EnsuredBufReader<R, B>
pub fn from_buffer_and_ensured_size(
    buf: B,
    ensured_size: usize,
    inner: R
) -> EnsuredBufReader<R, B>
[src]

Creates a new EnsuredBufReader with given buffer and a specified ensured_size.

Buffer length must be larger than or equal to ensured_size. ensured_size must be positive.

Panics

Panics if buffer is smaller than ensured_size. Panics if ensured_size is 0.

pub fn buffer(&self) -> &[u8][src]

Returns a reference to current buffer. This method doesn't read bytes from underlying reader.

Examples

use std::fs::File;
use std::io::{self, BufRead};
use ensured_bufreader::EnsuredBufReader;

fn main() -> io::Result<()> {
    let f = File::open("README.md")?;
    let mut r = EnsuredBufReader::new(f);

    // Read bytes from file and consume 8 bytes.
    let read_bytes = r.fill_buf()?.to_owned();
    r.consume(8);
     
    // Get buffer.
    // Current buffer should be 8 bytes shorter than `read_bytes`.
    let buf = r.buffer();
    assert_eq!(buf, &read_bytes[8..]);

    Ok(())
}

pub fn fill_buf_to_expected_size(
    &mut self,
    expected_size: usize
) -> Result<&[u8]>
[src]

Try to fill buffer and return reference to buffer. The buffer filled at least expected_size bytes if EnsuredBufReader could read from underlying reader.

Errors

Returns error that has .kind() == ErrorKind::InvalidInput if expected_size is larger than capacity.

Examples

The buffer will be filled to expected_size.

use std::fs::File;
use std::io::{self, BufRead};
use ensured_bufreader::EnsuredBufReader;

fn main() -> io::Result<()> {
    let f = File::open("README.md")?;
    let mut r = EnsuredBufReader::with_capacity_and_ensured_size(1024, 1, f);

    // Fill buffer.
    let read_bytes = r.fill_buf_to_expected_size(512)?;
    assert!(read_bytes.len() >= 512);

    Ok(())
}

If expected_size is larger than capacity, error will be returned.

use std::fs::File;
use std::io::{self, BufRead, ErrorKind};
use ensured_bufreader::EnsuredBufReader;

fn main() -> io::Result<()> {
    let f = File::open("README.md")?;
    let mut r = EnsuredBufReader::with_capacity_and_ensured_size(512, 1, f);

    let err = r.fill_buf_to_expected_size(513).unwrap_err();
    assert_eq!(err.kind(), ErrorKind::InvalidInput);

    Ok(())
}

pub fn get_capacity(&self) -> usize[src]

Get current capacity size.

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let r = EnsuredBufReader::new(f);

    assert_eq!(r.get_capacity(), 8192);
    Ok(())
}

pub fn get_ensured_size(&self) -> usize[src]

Get current ensured size.

Examples

use std::fs::File;
use ensured_bufreader::EnsuredBufReader;

fn main() -> std::io::Result<()> {
    let f = File::open("README.md")?;
    let r = EnsuredBufReader::new(f);

    assert_eq!(r.get_ensured_size(), 128);
    Ok(())
}

pub fn current_bytes(&self) -> usize[src]

Returns count of bytes in buffer.

Trait Implementations

impl<R, B> Debug for EnsuredBufReader<R, B> where
    R: Read + Debug,
    B: AsRef<[u8]> + AsMut<[u8]>, 
[src]

impl<R: Read, B: AsRef<[u8]> + AsMut<[u8]>> Read for EnsuredBufReader<R, B>[src]

impl<R: Read, B: AsRef<[u8]> + AsMut<[u8]>> BufRead for EnsuredBufReader<R, B>[src]

Auto Trait Implementations

impl<R, B> Send for EnsuredBufReader<R, B> where
    B: Send,
    R: Send

impl<R, B> Unpin for EnsuredBufReader<R, B> where
    B: Unpin,
    R: Unpin

impl<R, B> Sync for EnsuredBufReader<R, B> where
    B: Sync,
    R: Sync

impl<R, B> UnwindSafe for EnsuredBufReader<R, B> where
    B: UnwindSafe,
    R: UnwindSafe

impl<R, B> RefUnwindSafe for EnsuredBufReader<R, B> where
    B: RefUnwindSafe,
    R: RefUnwindSafe

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]