1.0.0[][src]Struct std::io::Take

pub struct Take<T> { /* fields omitted */ }

Reader adaptor which limits the bytes read from an underlying reader.

This struct is generally created by calling take on a reader. Please see the documentation of take for more details.

Methods

impl<T> Take<T>[src]

pub fn limit(&self) -> u64[src]

Returns the number of bytes that can be read before this instance will return EOF.

Note

This instance may reach EOF after reading fewer bytes than indicated by this method if the underlying Read instance reaches EOF.

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let f = File::open("foo.txt")?;

    // read at most five bytes
    let handle = f.take(5);

    println!("limit: {}", handle.limit());
    Ok(())
}Run

pub fn set_limit(&mut self, limit: u64)1.27.0[src]

Sets the number of bytes that can be read before this instance will return EOF. This is the same as constructing a new Take instance, so the amount of bytes read and the previous limit value don't matter when calling this method.

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let f = File::open("foo.txt")?;

    // read at most five bytes
    let mut handle = f.take(5);
    handle.set_limit(10);

    assert_eq!(handle.limit(), 10);
    Ok(())
}Run

pub fn into_inner(self) -> T1.15.0[src]

Consumes the Take, returning the wrapped reader.

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.into_inner();
    Ok(())
}Run

Important traits for &'_ mut F
pub fn get_ref(&self) -> &T1.20.0[src]

Gets a reference to the underlying reader.

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.get_ref();
    Ok(())
}Run

Important traits for &'_ mut F
pub fn get_mut(&mut self) -> &mut T1.20.0[src]

Gets a mutable reference to the underlying reader.

Care should be taken to avoid modifying the internal I/O state of the underlying reader as doing so may corrupt the internal limit of this Take.

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.get_mut();
    Ok(())
}Run

Trait Implementations

impl<T: Read> Read for Take<T>[src]

fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize>1.36.0[src]

Like read, except that it reads into a slice of buffers. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize>[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>1.6.0[src]

Read the exact number of bytes required to fill buf. Read more

Important traits for &'_ mut F
fn by_ref(&mut self) -> &mut Self where
    Self: Sized
[src]

Creates a "by reference" adaptor for this instance of Read. Read more

Important traits for Bytes<R>
fn bytes(self) -> Bytes<Self> where
    Self: Sized
[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

Important traits for Chain<T, U>
fn chain<R: Read>(self, next: R) -> Chain<Self, R> where
    Self: Sized
[src]

Creates an adaptor which will chain this stream with another. Read more

Important traits for Take<T>
fn take(self, limit: u64) -> Take<Self> where
    Self: Sized
[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl<T: BufRead> BufRead for Take<T>[src]

fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>[src]

Read all bytes into buf until the delimiter byte or EOF is reached. Read more

fn read_line(&mut self, buf: &mut String) -> Result<usize>[src]

Read all bytes until a newline (the 0xA byte) is reached, and append them to the provided buffer. Read more

Important traits for Split<B>
fn split(self, byte: u8) -> Split<Self> where
    Self: Sized
[src]

Returns an iterator over the contents of this reader split on the byte byte. Read more

Important traits for Lines<B>
fn lines(self) -> Lines<Self> where
    Self: Sized
[src]

Returns an iterator over the lines of this reader. Read more

impl<T: Debug> Debug for Take<T>[src]

Auto Trait Implementations

impl<T> Send for Take<T> where
    T: Send

impl<T> Sync for Take<T> where
    T: Sync

Blanket Implementations

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> Into<U> for T where
    U: From<T>, 
[src]

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> Borrow<T> for T where
    T: ?Sized
[src]

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

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