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 
19 mod buf_impl;
20 mod buf_mut;
21 mod chain;
22 mod iter;
23 mod limit;
24 #[cfg(feature = "std")]
25 mod reader;
26 mod take;
27 mod uninit_slice;
28 mod vec_deque;
29 #[cfg(feature = "std")]
30 mod writer;
31 
32 pub use self::buf_impl::Buf;
33 pub use self::buf_mut::BufMut;
34 pub use self::chain::Chain;
35 pub use self::iter::IntoIter;
36 pub use self::limit::Limit;
37 pub use self::take::Take;
38 pub use self::uninit_slice::UninitSlice;
39 
40 #[cfg(feature = "std")]
41 pub use self::{reader::Reader, writer::Writer};
42