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