From 4ebffd010383ca62e48cec45122e88d168927522 Mon Sep 17 00:00:00 2001
From: Carl Lerche <me@carllerche.com>
Date: Wed, 11 Feb 2015 10:04:31 -0800
Subject: [PATCH] Add more documentation

---
 src/bytes.rs | 87 +---------------------------------------------------
 src/lib.rs   | 17 ++++++----
 2 files changed, 12 insertions(+), 92 deletions(-)

diff --git a/src/bytes.rs b/src/bytes.rs
index 0b97f0e..ef3f69f 100644
--- a/src/bytes.rs
+++ b/src/bytes.rs
@@ -6,6 +6,7 @@ use core::nonzero::NonZero;
 
 const INLINE: usize = 1;
 
+/// A specialized `ByteStr` box.
 #[unsafe_no_drop_flag]
 pub struct Bytes {
     vtable: NonZero<usize>,
@@ -252,92 +253,6 @@ impl<B: ByteStr + 'static> ByteStrPriv for B {
     }
 }
 
-/*
-impl ops::Index<usize> for Bytes {
-    type Output = u8;
-
-    fn index(&self, index: &usize) -> &u8 {
-        self.bytes.index(index)
-    }
-}
-
-impl PartialEq<Bytes> for Bytes {
-    fn eq(&self, other: &Bytes) -> bool {
-        let mut i1 = self.iter();
-        let mut i2 = other.iter();
-
-        loop {
-            let el = i1.next();
-
-            if el != i2.next() {
-                return false;
-            }
-
-            if el.is_none() {
-                return true;
-            }
-        }
-    }
-}
-
-pub struct BytesIter<'a> {
-    bytes: &'a Bytes,
-    pos: usize,
-}
-
-impl<'a> Iterator for BytesIter<'a> {
-    type Item = u8;
-
-    fn next(&mut self) -> Option<u8> {
-        if self.pos == self.bytes.len() {
-            return None;
-        }
-
-        let ret = self.bytes[self.pos];
-        self.pos += 1;
-        Some(ret)
-    }
-}
-
-#[cfg(test)]
-mod test {
-    use super::Bytes;
-
-    #[test]
-    pub fn test_accessing_bytes() {
-        let bytes = from_slice(b"foo");
-
-        for i in 0..3us {
-            assert_eq!(b"foo"[i], bytes[i]);
-        }
-    }
-
-    /*
-     *
-     * ===== Equality =====
-     *
-     */
-
-    #[test]
-    pub fn test_literal_bytes_eq() {
-        assert!(from_slice(b"foo") == from_slice(b"foo"));
-        assert!(from_slice(b"foo") != from_slice(b"bar"));
-        assert!(from_slice(b"foo") != from_slice(b"foo*"));
-        assert!(from_slice(b"foo*") != from_slice(b"foo"));
-    }
-
-    /*
-     *
-     * ===== Helpers =====
-     *
-     */
-
-    fn from_slice(bytes: &[u8]) -> Bytes {
-        Bytes::from_slice(bytes)
-    }
-}
-*/
-
 #[test]
 pub fn test_size_of() {
     let expect = mem::size_of::<usize>() * 2;
diff --git a/src/lib.rs b/src/lib.rs
index fddd320..ce145f0 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -24,12 +24,13 @@ mod rope;
 mod slice;
 
 pub mod traits {
+    //! All traits are re-exported here to allow glob imports.
     pub use {Buf, BufExt, MutBuf, MutBufExt, ByteStr};
 }
 
 const MAX_CAPACITY: usize = u32::MAX as usize;
 
-/// A trait for values that provide random and sequential access to bytes.
+/// A trait for values that provide sequential read access to bytes.
 pub trait Buf {
 
     /// Returns the number of bytes that can be accessed from the Buf
@@ -99,6 +100,7 @@ pub trait Buf {
     }
 }
 
+/// An extension trait providing extra functions applicable to all `Buf` values.
 pub trait BufExt {
 
     /// Read bytes from this Buf into the given sink and advance the cursor by
@@ -106,7 +108,7 @@ pub trait BufExt {
     fn read<S: Sink>(&mut self, dst: S) -> Result<usize, S::Error>;
 }
 
-// TODO: Remove Sized
+/// A trait for values that provide sequential write access to bytes.
 pub trait MutBuf : Sized {
 
     /// Returns the number of bytes that can be accessed from the Buf
@@ -180,6 +182,7 @@ pub trait MutBuf : Sized {
     }
 }
 
+/// An extension trait providing extra functions applicable to all `MutBuf` values.
 pub trait MutBufExt {
 
     /// Write bytes from the given source into the current `MutBuf` and advance
@@ -193,6 +196,9 @@ pub trait MutBufExt {
  *
  */
 
+/// An immutable sequence of bytes. Operations will not mutate the original
+/// value. Since only immutable access is permitted, operations do not require
+/// copying (though, sometimes copying will happen as an optimization).
 pub trait ByteStr : Clone + Sized + Send + Sync + ops::Index<usize, Output=u8> {
 
     // Until HKT lands, the buf must be bound by 'static
@@ -274,13 +280,14 @@ impl<B: MutBuf> MutBufExt for B {
  *
  */
 
-/// An value that reads bytes from a Buf into itself
+/// A value that reads bytes from a Buf into itself
 pub trait Sink {
     type Error;
 
     fn sink<B: Buf>(self, buf: &mut B) -> Result<usize, Self::Error>;
 }
 
+/// A value that writes bytes from itself into a `MutBuf`.
 pub trait Source {
     type Error;
 
@@ -389,7 +396,7 @@ impl Buf for Box<Buf+'static> {
 
 /*
  *
- * ===== BufError / BufResult =====
+ * ===== BufError  =====
  *
  */
 
@@ -398,5 +405,3 @@ pub enum BufError {
     Underflow,
     Overflow,
 }
-
-pub type BufResult<T> = Result<T, BufError>;
-- 
GitLab