[−][src]Struct bytes::Bytes
A reference counted contiguous slice of memory.
Bytes
is an efficient container for storing and operating on contiguous
slices of memory. It is intended for use primarily in networking code, but
could have applications elsewhere as well.
Bytes
values facilitate zero-copy network programming by allowing multiple
Bytes
objects to point to the same underlying memory. This is managed by
using a reference count to track when the memory is no longer needed and can
be freed.
use bytes::Bytes; let mut mem = Bytes::from(&b"Hello world"[..]); let a = mem.slice(0, 5); assert_eq!(&a[..], b"Hello"); let b = mem.split_to(6); assert_eq!(&mem[..], b"world"); assert_eq!(&b[..], b"Hello ");
Memory layout
The Bytes
struct itself is fairly small, limited to a pointer to the
memory and 4 usize
fields used to track information about which segment of
the underlying memory the Bytes
handle has access to.
The memory layout looks like this:
+-------+
| Bytes |
+-------+
/ \_____
| \
v v
+-----+------------------------------------+
| Arc | | Data | |
+-----+------------------------------------+
Bytes
keeps both a pointer to the shared Arc
containing the full memory
slice and a pointer to the start of the region visible by the handle.
Bytes
also tracks the length of its view into the memory.
Sharing
The memory itself is reference counted, and multiple Bytes
objects may
point to the same region. Each Bytes
handle point to different sections within
the memory region, and Bytes
handle may or may not have overlapping views
into the memory.
Arc ptrs +---------+
________________________ / | Bytes 2 |
/ +---------+
/ +-----------+ | |
|_________/ | Bytes 1 | | |
| +-----------+ | |
| | | ___/ data | tail
| data | tail |/ |
v v v v
+-----+---------------------------------+-----+
| Arc | | | | |
+-----+---------------------------------+-----+
Mutating
While Bytes
handles may potentially represent overlapping views of the
underlying memory slice and may not be mutated, BytesMut
handles are
guaranteed to be the only handle able to view that slice of memory. As such,
BytesMut
handles are able to mutate the underlying memory. Note that
holding a unique view to a region of memory does not mean that there are no
other Bytes
and BytesMut
handles with disjoint views of the underlying
memory.
Inline bytes
As an optimization, when the slice referenced by a Bytes
or BytesMut
handle is small enough 1, with_capacity
will avoid the allocation by
inlining the slice directly in the handle. In this case, a clone is no
longer "shallow" and the data will be copied. Converting from a Vec
will
never use inlining.
-
Small enough: 31 bytes on 64 bit systems, 15 on 32 bit systems. ↩
Methods
impl Bytes
[src]
impl Bytes
pub fn with_capacity(capacity: usize) -> Bytes
[src]
pub fn with_capacity(capacity: usize) -> Bytes
Creates a new Bytes
with the specified capacity.
The returned Bytes
will be able to hold at least capacity
bytes
without reallocating. If capacity
is under 4 * size_of::<usize>() - 1
,
then BytesMut
will not allocate.
It is important to note that this function does not specify the length
of the returned Bytes
, but only the capacity.
Examples
use bytes::Bytes; let mut bytes = Bytes::with_capacity(64); // `bytes` contains no data, even though there is capacity assert_eq!(bytes.len(), 0); bytes.extend_from_slice(&b"hello world"[..]); assert_eq!(&bytes[..], b"hello world");
pub fn new() -> Bytes
[src]
pub fn new() -> Bytes
Creates a new empty Bytes
.
This will not allocate and the returned Bytes
handle will be empty.
Examples
use bytes::Bytes; let b = Bytes::new(); assert_eq!(&b[..], b"");
pub fn from_static(bytes: &'static [u8]) -> Bytes
[src]
pub fn from_static(bytes: &'static [u8]) -> Bytes
Creates a new Bytes
from a static slice.
The returned Bytes
will point directly to the static slice. There is
no allocating or copying.
Examples
use bytes::Bytes; let b = Bytes::from_static(b"hello"); assert_eq!(&b[..], b"hello");
pub fn len(&self) -> usize
[src]
pub fn len(&self) -> usize
Returns the number of bytes contained in this Bytes
.
Examples
use bytes::Bytes; let b = Bytes::from(&b"hello"[..]); assert_eq!(b.len(), 5);
pub fn is_empty(&self) -> bool
[src]
pub fn is_empty(&self) -> bool
Returns true if the Bytes
has a length of 0.
Examples
use bytes::Bytes; let b = Bytes::new(); assert!(b.is_empty());
pub fn slice(&self, begin: usize, end: usize) -> Bytes
[src]
pub fn slice(&self, begin: usize, end: usize) -> Bytes
Returns a slice of self for the index range [begin..end)
.
This will increment the reference count for the underlying memory and
return a new Bytes
handle set to the slice.
This operation is O(1)
.
Examples
use bytes::Bytes; let a = Bytes::from(&b"hello world"[..]); let b = a.slice(2, 5); assert_eq!(&b[..], b"llo");
Panics
Requires that begin <= end
and end <= self.len()
, otherwise slicing
will panic.
pub fn slice_from(&self, begin: usize) -> Bytes
[src]
pub fn slice_from(&self, begin: usize) -> Bytes
Returns a slice of self for the index range [begin..self.len())
.
This will increment the reference count for the underlying memory and
return a new Bytes
handle set to the slice.
This operation is O(1)
and is equivalent to self.slice(begin, self.len())
.
Examples
use bytes::Bytes; let a = Bytes::from(&b"hello world"[..]); let b = a.slice_from(6); assert_eq!(&b[..], b"world");
Panics
Requires that begin <= self.len()
, otherwise slicing will panic.
pub fn slice_to(&self, end: usize) -> Bytes
[src]
pub fn slice_to(&self, end: usize) -> Bytes
Returns a slice of self for the index range [0..end)
.
This will increment the reference count for the underlying memory and
return a new Bytes
handle set to the slice.
This operation is O(1)
and is equivalent to self.slice(0, end)
.
Examples
use bytes::Bytes; let a = Bytes::from(&b"hello world"[..]); let b = a.slice_to(5); assert_eq!(&b[..], b"hello");
Panics
Requires that end <= self.len()
, otherwise slicing will panic.
pub fn slice_ref(&self, subset: &[u8]) -> Bytes
[src]
pub fn slice_ref(&self, subset: &[u8]) -> Bytes
Returns a slice of self that is equivalent to the given subset
.
When processing a Bytes
buffer with other tools, one often gets a
&[u8]
which is in fact a slice of the Bytes
, i.e. a subset of it.
This function turns that &[u8]
into another Bytes
, as if one had
called self.slice()
with the offsets that correspond to subset
.
This operation is O(1)
.
Examples
use bytes::Bytes; let bytes = Bytes::from(&b"012345678"[..]); let as_slice = bytes.as_ref(); let subset = &as_slice[2..6]; let subslice = bytes.slice_ref(&subset); assert_eq!(&subslice[..], b"2345");
Panics
Requires that the given sub
slice is in fact contained within the
Bytes
buffer; otherwise this function will panic.
pub fn split_off(&mut self, at: usize) -> Bytes
[src]
pub fn split_off(&mut self, at: usize) -> Bytes
Splits the bytes into two at the given index.
Afterwards self
contains elements [0, at)
, and the returned Bytes
contains elements [at, len)
.
This is an O(1)
operation that just increases the reference count and
sets a few indices.
Examples
use bytes::Bytes; let mut a = Bytes::from(&b"hello world"[..]); let b = a.split_off(5); assert_eq!(&a[..], b"hello"); assert_eq!(&b[..], b" world");
Panics
Panics if at > len
.
pub fn split_to(&mut self, at: usize) -> Bytes
[src]
pub fn split_to(&mut self, at: usize) -> Bytes
Splits the bytes into two at the given index.
Afterwards self
contains elements [at, len)
, and the returned
Bytes
contains elements [0, at)
.
This is an O(1)
operation that just increases the reference count and
sets a few indices.
Examples
use bytes::Bytes; let mut a = Bytes::from(&b"hello world"[..]); let b = a.split_to(5); assert_eq!(&a[..], b" world"); assert_eq!(&b[..], b"hello");
Panics
Panics if at > len
.
pub fn truncate(&mut self, len: usize)
[src]
pub fn truncate(&mut self, len: usize)
Shortens the buffer, keeping the first len
bytes and dropping the
rest.
If len
is greater than the buffer's current length, this has no
effect.
The split_off
method can emulate truncate
, but this causes the
excess bytes to be returned instead of dropped.
Examples
use bytes::Bytes; let mut buf = Bytes::from(&b"hello world"[..]); buf.truncate(5); assert_eq!(buf, b"hello"[..]);
pub fn advance(&mut self, cnt: usize)
[src]
pub fn advance(&mut self, cnt: usize)
Shortens the buffer, dropping the first cnt
bytes and keeping the
rest.
This is the same function as Buf::advance
, and in the next breaking
release of bytes
, this implementation will be removed in favor of
having Bytes
implement Buf
.
Panics
This function panics if cnt
is greater than self.len()
pub fn clear(&mut self)
[src]
pub fn clear(&mut self)
Clears the buffer, removing all data.
Examples
use bytes::Bytes; let mut buf = Bytes::from(&b"hello world"[..]); buf.clear(); assert!(buf.is_empty());
pub fn try_mut(self) -> Result<BytesMut, Bytes>
[src]
pub fn try_mut(self) -> Result<BytesMut, Bytes>
Attempts to convert into a BytesMut
handle.
This will only succeed if there are no other outstanding references to
the underlying chunk of memory. Bytes
handles that contain inlined
bytes will always be convertable to BytesMut
.
Examples
use bytes::Bytes; let a = Bytes::from(&b"Mary had a little lamb, little lamb, little lamb..."[..]); // Create a shallow clone let b = a.clone(); // This will fail because `b` shares a reference with `a` let a = a.try_mut().unwrap_err(); drop(b); // This will succeed let mut a = a.try_mut().unwrap(); a[0] = b'b'; assert_eq!(&a[..4], b"bary");
pub fn extend_from_slice(&mut self, extend: &[u8])
[src]
pub fn extend_from_slice(&mut self, extend: &[u8])
Appends given bytes to this object.
If this Bytes
object has not enough capacity, it is resized first.
If it is shared (refcount > 1
), it is copied first.
This operation can be less effective than the similar operation on
BytesMut
, especially on small additions.
Examples
use bytes::Bytes; let mut buf = Bytes::from("aabb"); buf.extend_from_slice(b"ccdd"); buf.extend_from_slice(b"eeff"); assert_eq!(b"aabbccddeeff", &buf[..]);
Trait Implementations
impl FromBuf for Bytes
[src]
impl FromBuf for Bytes
impl IntoBuf for Bytes
[src]
impl IntoBuf for Bytes
type Buf = Cursor<Self>
The Buf
type that self
is being converted into
fn into_buf(self) -> Self::Buf
[src]
fn into_buf(self) -> Self::Buf
Creates a Buf
from a value. Read more
impl<'a> IntoBuf for &'a Bytes
[src]
impl<'a> IntoBuf for &'a Bytes
type Buf = Cursor<Self>
The Buf
type that self
is being converted into
fn into_buf(self) -> Self::Buf
[src]
fn into_buf(self) -> Self::Buf
Creates a Buf
from a value. Read more
impl PartialOrd<Bytes> for Bytes
[src]
impl PartialOrd<Bytes> for Bytes
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<[u8]> for Bytes
[src]
impl PartialOrd<[u8]> for Bytes
fn partial_cmp(&self, other: &[u8]) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &[u8]) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<Bytes> for [u8]
[src]
impl PartialOrd<Bytes> for [u8]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<str> for Bytes
[src]
impl PartialOrd<str> for Bytes
fn partial_cmp(&self, other: &str) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &str) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<Bytes> for str
[src]
impl PartialOrd<Bytes> for str
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<Vec<u8>> for Bytes
[src]
impl PartialOrd<Vec<u8>> for Bytes
fn partial_cmp(&self, other: &Vec<u8>) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Vec<u8>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<Bytes> for Vec<u8>
[src]
impl PartialOrd<Bytes> for Vec<u8>
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<String> for Bytes
[src]
impl PartialOrd<String> for Bytes
fn partial_cmp(&self, other: &String) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &String) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl PartialOrd<Bytes> for String
[src]
impl PartialOrd<Bytes> for String
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<'a> PartialOrd<Bytes> for &'a [u8]
[src]
impl<'a> PartialOrd<Bytes> for &'a [u8]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<'a> PartialOrd<Bytes> for &'a str
[src]
impl<'a> PartialOrd<Bytes> for &'a str
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &Bytes) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<'a, T: ?Sized> PartialOrd<&'a T> for Bytes where
Bytes: PartialOrd<T>,
[src]
impl<'a, T: ?Sized> PartialOrd<&'a T> for Bytes where
Bytes: PartialOrd<T>,
fn partial_cmp(&self, other: &&'a T) -> Option<Ordering>
[src]
fn partial_cmp(&self, other: &&'a T) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl Default for Bytes
[src]
impl Default for Bytes
impl Ord for Bytes
[src]
impl Ord for Bytes
fn cmp(&self, other: &Bytes) -> Ordering
[src]
fn cmp(&self, other: &Bytes) -> Ordering
This method returns an Ordering
between self
and other
. Read more
fn max(self, other: Self) -> Self
1.21.0[src]
fn max(self, other: Self) -> Self
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
1.21.0[src]
fn min(self, other: Self) -> Self
Compares and returns the minimum of two values. Read more
impl PartialEq<Bytes> for Bytes
[src]
impl PartialEq<Bytes> for Bytes
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<[u8]> for Bytes
[src]
impl PartialEq<[u8]> for Bytes
fn eq(&self, other: &[u8]) -> bool
[src]
fn eq(&self, other: &[u8]) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Bytes> for [u8]
[src]
impl PartialEq<Bytes> for [u8]
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<str> for Bytes
[src]
impl PartialEq<str> for Bytes
fn eq(&self, other: &str) -> bool
[src]
fn eq(&self, other: &str) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Bytes> for str
[src]
impl PartialEq<Bytes> for str
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Vec<u8>> for Bytes
[src]
impl PartialEq<Vec<u8>> for Bytes
fn eq(&self, other: &Vec<u8>) -> bool
[src]
fn eq(&self, other: &Vec<u8>) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Bytes> for Vec<u8>
[src]
impl PartialEq<Bytes> for Vec<u8>
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<String> for Bytes
[src]
impl PartialEq<String> for Bytes
fn eq(&self, other: &String) -> bool
[src]
fn eq(&self, other: &String) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Bytes> for String
[src]
impl PartialEq<Bytes> for String
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl<'a> PartialEq<Bytes> for &'a [u8]
[src]
impl<'a> PartialEq<Bytes> for &'a [u8]
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl<'a> PartialEq<Bytes> for &'a str
[src]
impl<'a> PartialEq<Bytes> for &'a str
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl<'a, T: ?Sized> PartialEq<&'a T> for Bytes where
Bytes: PartialEq<T>,
[src]
impl<'a, T: ?Sized> PartialEq<&'a T> for Bytes where
Bytes: PartialEq<T>,
fn eq(&self, other: &&'a T) -> bool
[src]
fn eq(&self, other: &&'a T) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<BytesMut> for Bytes
[src]
impl PartialEq<BytesMut> for Bytes
fn eq(&self, other: &BytesMut) -> bool
[src]
fn eq(&self, other: &BytesMut) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl PartialEq<Bytes> for BytesMut
[src]
impl PartialEq<Bytes> for BytesMut
fn eq(&self, other: &Bytes) -> bool
[src]
fn eq(&self, other: &Bytes) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl From<BytesMut> for Bytes
[src]
impl From<BytesMut> for Bytes
impl From<Vec<u8>> for Bytes
[src]
impl From<Vec<u8>> for Bytes
impl From<String> for Bytes
[src]
impl From<String> for Bytes
impl<'a> From<&'a [u8]> for Bytes
[src]
impl<'a> From<&'a [u8]> for Bytes
impl<'a> From<&'a str> for Bytes
[src]
impl<'a> From<&'a str> for Bytes
impl From<Bytes> for BytesMut
[src]
impl From<Bytes> for BytesMut
impl AsRef<[u8]> for Bytes
[src]
impl AsRef<[u8]> for Bytes
impl Clone for Bytes
[src]
impl Clone for Bytes
fn clone(&self) -> Bytes
[src]
fn clone(&self) -> Bytes
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl IntoIterator for Bytes
[src]
impl IntoIterator for Bytes
type Item = u8
The type of the elements being iterated over.
type IntoIter = Iter<Cursor<Bytes>>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
fn into_iter(self) -> Self::IntoIter
Creates an iterator from a value. Read more
impl<'a> IntoIterator for &'a Bytes
[src]
impl<'a> IntoIterator for &'a Bytes
type Item = u8
The type of the elements being iterated over.
type IntoIter = Iter<Cursor<&'a Bytes>>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
fn into_iter(self) -> Self::IntoIter
Creates an iterator from a value. Read more
impl Extend<u8> for Bytes
[src]
impl Extend<u8> for Bytes
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = u8>,
[src]
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = u8>,
Extends a collection with the contents of an iterator. Read more
impl<'a> Extend<&'a u8> for Bytes
[src]
impl<'a> Extend<&'a u8> for Bytes
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = &'a u8>,
[src]
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = &'a u8>,
Extends a collection with the contents of an iterator. Read more
impl Eq for Bytes
[src]
impl Eq for Bytes
impl Deref for Bytes
[src]
impl Deref for Bytes
type Target = [u8]
The resulting type after dereferencing.
fn deref(&self) -> &[u8]
[src]
fn deref(&self) -> &[u8]
Dereferences the value.
impl Hash for Bytes
[src]
impl Hash for Bytes
fn hash<H>(&self, state: &mut H) where
H: Hasher,
[src]
fn hash<H>(&self, state: &mut H) where
H: Hasher,
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl FromIterator<u8> for Bytes
[src]
impl FromIterator<u8> for Bytes
fn from_iter<T: IntoIterator<Item = u8>>(into_iter: T) -> Self
[src]
fn from_iter<T: IntoIterator<Item = u8>>(into_iter: T) -> Self
Creates a value from an iterator. Read more
impl Debug for Bytes
[src]
impl Debug for Bytes
fn fmt(&self, fmt: &mut Formatter) -> Result
[src]
fn fmt(&self, fmt: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Borrow<[u8]> for Bytes
[src]
impl Borrow<[u8]> for Bytes
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
type Owned = T
fn to_owned(&self) -> T
[src]
fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
fn clone_into(&self, target: &mut T)
[src]
fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> From for T
[src]
impl<T> From for T
impl<I> IntoIterator for I where
I: Iterator,
[src]
impl<I> IntoIterator for I where
I: Iterator,
type Item = <I as Iterator>::Item
The type of the elements being iterated over.
type IntoIter = I
Which kind of iterator are we turning this into?
fn into_iter(self) -> I
[src]
fn into_iter(self) -> I
Creates an iterator from a value. Read more
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more