1//! Utilities for working with buffers.
2//!
3//! A buffer is any structure that contains a sequence of bytes. The bytes may
4//! or may not be stored in contiguous memory. This module contains traits used
5//! to abstract over buffers as well as utilities for working with buffer types.
6//!
7//! # `Buf`, `BufMut`
8//!
9//! These are the two foundational traits for abstractly working with buffers.
10//! They can be thought as iterators for byte structures. They offer additional
11//! performance over `Iterator` by providing an API optimized for byte slices.
12//!
13//! See [`Buf`] and [`BufMut`] for more details.
14//!
15//! [rope]: https://en.wikipedia.org/wiki/Rope_(data_structure)
16//! [`Buf`]: trait.Buf.html
17//! [`BufMut`]: trait.BufMut.html
18
19mod buf_impl;
20mod buf_mut;
21mod chain;
22mod iter;
23mod limit;
24#[cfg(feature = "std")]
25mod reader;
26mod take;
27mod uninit_slice;
28mod vec_deque;
29#[cfg(feature = "std")]
30mod writer;
31
32pub use self::buf_impl::Buf;
33pub use self::buf_mut::BufMut;
34pub use self::chain::Chain;
35pub use self::iter::IntoIter;
36pub use self::limit::Limit;
37pub use self::take::Take;
38pub use self::uninit_slice::UninitSlice;
39
40#[cfg(feature = "std")]
41pub use self::{reader::Reader, writer::Writer};
42