From 6f00c6117b72189018866b18bc839600021a479e Mon Sep 17 00:00:00 2001
From: Florian Hartwig <florian.j.hartwig@gmail.com>
Date: Tue, 24 Feb 2015 21:16:59 +0100
Subject: [PATCH] Remove RingBufReader and RingBufWriter types

---
 src/lib.rs  |  2 +-
 src/ring.rs | 54 ++++++++++++++++++-----------------------------------
 2 files changed, 19 insertions(+), 37 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index 8c4874f..18eb6cc 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -6,7 +6,7 @@
 pub use byte_buf::{ByteBuf, ROByteBuf, MutByteBuf};
 pub use byte_str::{SeqByteStr, SmallByteStr, SmallByteStrBuf};
 pub use bytes::Bytes;
-pub use ring::{RingBuf, RingBufReader, RingBufWriter};
+pub use ring::RingBuf;
 pub use rope::{Rope, RopeBuf};
 pub use slice::{SliceBuf, MutSliceBuf};
 
diff --git a/src/ring.rs b/src/ring.rs
index 1de98b1..3133350 100644
--- a/src/ring.rs
+++ b/src/ring.rs
@@ -52,16 +52,6 @@ impl RingBuf {
         self.cap
     }
 
-    // Access readable bytes as a Buf
-    pub fn reader<'a>(&'a mut self) -> RingBufReader<'a> {
-        RingBufReader { ring: self }
-    }
-
-    // Access writable bytes as a Buf
-    pub fn writer<'a>(&'a mut self) -> RingBufWriter<'a> {
-        RingBufWriter { ring: self }
-    }
-
     fn read_remaining(&self) -> usize {
         self.len
     }
@@ -141,59 +131,51 @@ impl Drop for RingBuf {
     }
 }
 
-pub struct RingBufReader<'a> {
-    ring: &'a mut RingBuf
-}
-
-impl<'a> Buf for RingBufReader<'a> {
+impl Buf for RingBuf {
 
     fn remaining(&self) -> usize {
-        self.ring.read_remaining()
+        self.read_remaining()
     }
 
-    fn bytes<'b>(&'b self) -> &'b [u8] {
-        let mut to = self.ring.pos + self.ring.len;
+    fn bytes(&self) -> &[u8] {
+        let mut to = self.pos + self.len;
 
-        if to > self.ring.cap {
-            to = self.ring.cap
+        if to > self.cap {
+            to = self.cap
         }
 
-        &self.ring.as_slice()[self.ring.pos .. to]
+        &self.as_slice()[self.pos .. to]
     }
 
     fn advance(&mut self, cnt: usize) {
-        self.ring.advance_reader(cnt)
+        self.advance_reader(cnt)
     }
 }
 
-pub struct RingBufWriter<'a> {
-    ring: &'a mut RingBuf
-}
-
-impl<'a> MutBuf for RingBufWriter<'a> {
+impl MutBuf for RingBuf {
 
     fn remaining(&self) -> usize {
-        self.ring.write_remaining()
+        self.write_remaining()
     }
 
     fn advance(&mut self, cnt: usize) {
-        self.ring.advance_writer(cnt)
+        self.advance_writer(cnt)
     }
 
-    fn mut_bytes<'b>(&'b mut self) -> &'b mut [u8] {
+    fn mut_bytes(&mut self) -> &mut [u8] {
         let mut from;
         let mut to;
 
-        from = self.ring.pos + self.ring.len;
-        from %= self.ring.cap;
+        from = self.pos + self.len;
+        from %= self.cap;
 
-        to = from + self.remaining();
+        to = from + <Self as MutBuf>::remaining(&self);
 
-        if to >= self.ring.cap {
-            to = self.ring.cap;
+        if to >= self.cap {
+            to = self.cap;
         }
 
-        &mut self.ring.as_mut_slice()[from..to]
+        &mut self.as_mut_slice()[from..to]
     }
 }
 
-- 
GitLab