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