     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41

    //! Utilities for working with buffers.
    //!
    //! A buffer is any structure that contains a sequence of bytes. The bytes may
    //! or may not be stored in contiguous memory. This module contains traits used
    //! to abstract over buffers as well as utilities for working with buffer types.
    //!
    //! # `Buf`, `BufMut`
    //!
    //! These are the two foundational traits for abstractly working with buffers.
    //! They can be thought as iterators for byte structures. They offer additional
    //! performance over `Iterator` by providing an API optimized for byte slices.
    //!
    //! See [`Buf`] and [`BufMut`] for more details.
    //!
    //! [rope]: https://en.wikipedia.org/wiki/Rope_(data_structure)
    //! [`Buf`]: trait.Buf.html
    //! [`BufMut`]: trait.BufMut.html

    mod buf_impl;
    mod buf_mut;
    mod chain;
    mod iter;
    mod limit;
    #[cfg(feature = "std")]
    mod reader;
    mod take;
    mod uninit_slice;
    mod vec_deque;
    #[cfg(feature = "std")]
    mod writer;

    pub use self::buf_impl::Buf;
    pub use self::buf_mut::BufMut;
    pub use self::chain::Chain;
    pub use self::iter::IntoIter;
    pub use self::limit::Limit;
    pub use self::take::Take;
    pub use self::uninit_slice::UninitSlice;

    #[cfg(feature = "std")]
    pub use self::{reader::Reader, writer::Writer};