mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-08 00:00:26 +02:00
- The return type of `BufMut::bytes_mut` is now `&mut [MaybeUninit<u8>]`. - The argument type of `BufMut::bytes_vectored_mut` is now `&mut [bytes::buf::IoSliceMut]`. - `bytes::buf::IoSliceMut` is a `repr(transparent)` wrapper around an `std::io::IoSliceMut`, but does not expose the inner bytes with a safe API, since they might be uninitialized. - `BufMut::bytesMut` and `BufMut::bytes_vectored_mut` are no longer `unsafe fn`, since the types encapsulate the unsafety instead.
43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
//! Utilities for working with buffers.
|
|
//!
|
|
//! A buffer is any structure that contains a sequence of bytes. The bytes may
|
|
//! or may not be stored in contiguous memory. This module contains traits used
|
|
//! to abstract over buffers as well as utilities for working with buffer types.
|
|
//!
|
|
//! # `Buf`, `BufMut`
|
|
//!
|
|
//! These are the two foundational traits for abstractly working with buffers.
|
|
//! They can be thought as iterators for byte structures. They offer additional
|
|
//! performance over `Iterator` by providing an API optimized for byte slices.
|
|
//!
|
|
//! See [`Buf`] and [`BufMut`] for more details.
|
|
//!
|
|
//! [rope]: https://en.wikipedia.org/wiki/Rope_(data_structure)
|
|
//! [`Buf`]: trait.Buf.html
|
|
//! [`BufMut`]: trait.BufMut.html
|
|
|
|
mod buf_impl;
|
|
mod buf_mut;
|
|
mod chain;
|
|
mod iter;
|
|
mod take;
|
|
mod vec_deque;
|
|
|
|
// When std::io::Reader etc. traits are not available, skip these
|
|
#[cfg(feature = "std")]
|
|
mod reader;
|
|
#[cfg(feature = "std")]
|
|
mod writer;
|
|
|
|
pub use self::buf_impl::Buf;
|
|
pub use self::buf_mut::BufMut;
|
|
#[cfg(feature = "std")]
|
|
pub use self::buf_mut::IoSliceMut;
|
|
pub use self::chain::Chain;
|
|
pub use self::iter::IntoIter;
|
|
#[cfg(feature = "std")]
|
|
pub use self::reader::Reader;
|
|
pub use self::take::Take;
|
|
#[cfg(feature = "std")]
|
|
pub use self::writer::Writer;
|