[][src]Struct futures_util::io::Take

#[must_use = "readers do nothing unless you `.await` or poll them"]
pub struct Take<R> { /* fields omitted */ }

Reader for the take method.

Methods

impl<R: AsyncRead> Take<R>[src]

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

Returns the remaining 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 AsyncRead instance reaches EOF.

Examples

use futures::io::{AsyncReadExt, Cursor};

let reader = Cursor::new(&b"12345678"[..]);
let mut buffer = [0; 2];

let mut take = reader.take(4);
let n = take.read(&mut buffer).await?;

assert_eq!(take.limit(), 2);

pub fn set_limit(&mut self, limit: u64)[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 futures::io::{AsyncReadExt, Cursor};

let reader = Cursor::new(&b"12345678"[..]);
let mut buffer = [0; 4];

let mut take = reader.take(4);
let n = take.read(&mut buffer).await?;

assert_eq!(n, 4);
assert_eq!(take.limit(), 0);

take.set_limit(10);
let n = take.read(&mut buffer).await?;
assert_eq!(n, 4);

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

Gets a reference to the underlying reader.

Examples

use futures::io::{AsyncReadExt, Cursor};

let reader = Cursor::new(&b"12345678"[..]);
let mut buffer = [0; 4];

let mut take = reader.take(4);
let n = take.read(&mut buffer).await?;

let cursor_ref = take.get_ref();
assert_eq!(cursor_ref.position(), 4);

Important traits for &'_ mut F
pub fn get_mut(&mut self) -> &mut R[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 futures::io::{AsyncReadExt, Cursor};

let reader = Cursor::new(&b"12345678"[..]);
let mut buffer = [0; 4];

let mut take = reader.take(4);
let n = take.read(&mut buffer).await?;

let cursor_mut = take.get_mut();

Important traits for Pin<P>
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut R>[src]

Gets a pinned 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.

pub fn into_inner(self) -> R[src]

Consumes the Take, returning the wrapped reader.

Examples

use futures::io::{AsyncReadExt, Cursor};

let reader = Cursor::new(&b"12345678"[..]);
let mut buffer = [0; 4];

let mut take = reader.take(4);
let n = take.read(&mut buffer).await?;

let cursor = take.into_inner();
assert_eq!(cursor.position(), 4);

Trait Implementations

impl<R: Unpin> Unpin for Take<R>[src]

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

impl<R: AsyncRead> AsyncRead for Take<R>[src]

impl<R: AsyncBufRead> AsyncBufRead for Take<R>[src]

Auto Trait Implementations

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

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

impl<R> UnwindSafe for Take<R> where
    R: UnwindSafe

impl<R> RefUnwindSafe for Take<R> where
    R: RefUnwindSafe

Blanket Implementations

impl<R> AsyncReadExt for R where
    R: AsyncRead + ?Sized
[src]

impl<R> AsyncBufReadExt for R where
    R: AsyncBufRead + ?Sized
[src]

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 = !

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> 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]