[−][src]Trait bytes::buf::ext::BufExt
Extra methods for implementations of Buf
.
Provided methods
fn take(self, limit: usize) -> Take<Self> where
Self: Sized,
Self: Sized,
Creates an adaptor which will read at most limit
bytes from self
.
This function returns a new instance of Buf
which will read at most
limit
bytes.
Examples
use bytes::{BufMut, buf::BufExt}; let mut buf = b"hello world"[..].take(5); let mut dst = vec![]; dst.put(&mut buf); assert_eq!(dst, b"hello"); let mut buf = buf.into_inner(); dst.clear(); dst.put(&mut buf); assert_eq!(dst, b" world");
fn chain<U: Buf>(self, next: U) -> Chain<Self, U> where
Self: Sized,
Self: Sized,
Creates an adaptor which will chain this buffer with another.
The returned Buf
instance will first consume all bytes from self
.
Afterwards the output is equivalent to the output of next.
Examples
use bytes::{Buf, buf::BufExt}; let mut chain = b"hello "[..].chain(&b"world"[..]); let full = chain.to_bytes(); assert_eq!(full.bytes(), b"hello world");
fn reader(self) -> Reader<Self> where
Self: Sized,
Self: Sized,
Creates an adaptor which implements the Read
trait for self
.
This function returns a new value which implements Read
by adapting
the Read
trait functions to the Buf
trait functions. Given that
Buf
operations are infallible, none of the Read
functions will
return with Err
.
Examples
use bytes::{Bytes, buf::BufExt}; use std::io::Read; let buf = Bytes::from("hello world"); let mut reader = buf.reader(); let mut dst = [0; 1024]; let num = reader.read(&mut dst).unwrap(); assert_eq!(11, num); assert_eq!(&dst[..11], &b"hello world"[..]);