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 | |