compio_io::util

Struct Take

Source
pub struct Take<R> { /* private fields */ }
Expand description

Read up to a limit number of bytes from reader.

Implementations§

Source§

impl<T> Take<T>

Source

pub fn limit(&self) -> u64

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

Source

pub fn set_limit(&mut self, limit: u64)

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.

Source

pub fn into_inner(self) -> T

Consumes the Take, returning the wrapped reader.

Source

pub fn get_ref(&self) -> &T

Gets a reference to the underlying reader.

Source

pub fn get_mut(&mut self) -> &mut T

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.

Trait Implementations§

Source§

impl<R: AsyncBufRead> AsyncBufRead for Take<R>

Source§

async fn fill_buf(&mut self) -> Result<&[u8]>

Try fill the internal buffer with data
Source§

fn consume(&mut self, amount: usize)

Mark how much data is read
Source§

impl<R: AsyncRead> AsyncRead for Take<R>

Source§

async fn read<B: IoBufMut>(&mut self, buf: B) -> BufResult<usize, B>

Read some bytes from this source into the IoBufMut buffer and return a BufResult, consisting of the buffer and a usize indicating how many bytes were read. Read more
Source§

async fn read_vectored<V: IoVectoredBufMut>( &mut self, buf: V, ) -> BufResult<usize, V>

Like read, except that it reads into a type implements IoVectoredBufMut. Read more
Source§

impl<R: Debug> Debug for Take<R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<R> Freeze for Take<R>
where R: Freeze,

§

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

§

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

§

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

§

impl<R> Unpin for Take<R>
where R: Unpin,

§

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

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<A> AsyncReadExt for A
where A: AsyncRead + ?Sized,

Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of AsyncRead. Read more
Source§

async fn read_exact<T: IoBufMut>(&mut self, buf: T) -> BufResult<(), T>

Read the exact number of bytes required to fill the buf.
Source§

async fn read_to_end(&mut self, buf: Vec<u8>) -> BufResult<usize, Vec<u8>>

Read all bytes until underlying reader reaches EOF.
Source§

async fn read_vectored_exact<T: IoVectoredBufMut>( &mut self, buf: T, ) -> BufResult<(), T>

Read the exact number of bytes required to fill the vectored buf.
Source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adaptor which reads at most limit bytes from it. Read more
Source§

async fn read_u8(&mut self) -> Result<u8>

Read a big endian u8 from the underlying reader.
Source§

async fn read_u8_le(&mut self) -> Result<u8>

Read a little endian u8 from the underlying reader.
Source§

async fn read_u16(&mut self) -> Result<u16>

Read a big endian u16 from the underlying reader.
Source§

async fn read_u16_le(&mut self) -> Result<u16>

Read a little endian u16 from the underlying reader.
Source§

async fn read_u32(&mut self) -> Result<u32>

Read a big endian u32 from the underlying reader.
Source§

async fn read_u32_le(&mut self) -> Result<u32>

Read a little endian u32 from the underlying reader.
Source§

async fn read_u64(&mut self) -> Result<u64>

Read a big endian u64 from the underlying reader.
Source§

async fn read_u64_le(&mut self) -> Result<u64>

Read a little endian u64 from the underlying reader.
Source§

async fn read_u128(&mut self) -> Result<u128>

Read a big endian u128 from the underlying reader.
Source§

async fn read_u128_le(&mut self) -> Result<u128>

Read a little endian u128 from the underlying reader.
Source§

async fn read_i8(&mut self) -> Result<i8>

Read a big endian i8 from the underlying reader.
Source§

async fn read_i8_le(&mut self) -> Result<i8>

Read a little endian i8 from the underlying reader.
Source§

async fn read_i16(&mut self) -> Result<i16>

Read a big endian i16 from the underlying reader.
Source§

async fn read_i16_le(&mut self) -> Result<i16>

Read a little endian i16 from the underlying reader.
Source§

async fn read_i32(&mut self) -> Result<i32>

Read a big endian i32 from the underlying reader.
Source§

async fn read_i32_le(&mut self) -> Result<i32>

Read a little endian i32 from the underlying reader.
Source§

async fn read_i64(&mut self) -> Result<i64>

Read a big endian i64 from the underlying reader.
Source§

async fn read_i64_le(&mut self) -> Result<i64>

Read a little endian i64 from the underlying reader.
Source§

async fn read_i128(&mut self) -> Result<i128>

Read a big endian i128 from the underlying reader.
Source§

async fn read_i128_le(&mut self) -> Result<i128>

Read a little endian i128 from the underlying reader.
Source§

async fn read_f32(&mut self) -> Result<f32>

Read a big endian f32 from the underlying reader.
Source§

async fn read_f32_le(&mut self) -> Result<f32>

Read a little endian f32 from the underlying reader.
Source§

async fn read_f64(&mut self) -> Result<f64>

Read a big endian f64 from the underlying reader.
Source§

async fn read_f64_le(&mut self) -> Result<f64>

Read a little endian f64 from the underlying reader.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.