From 2b0602e75646acd8d65b9efdcd6e6a3a8a1c1661 Mon Sep 17 00:00:00 2001
From: brianwp <brianwp@users.noreply.github.com>
Date: Wed, 24 May 2017 08:13:19 -0700
Subject: [PATCH] impl ExactSizeIterator for Iter<T: Buf> (#127)

---
 src/buf/iter.rs    |  2 ++
 tests/test_iter.rs | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 tests/test_iter.rs

diff --git a/src/buf/iter.rs b/src/buf/iter.rs
index c4d47e9..9345c05 100644
--- a/src/buf/iter.rs
+++ b/src/buf/iter.rs
@@ -112,3 +112,5 @@ impl<T: Buf> Iterator for Iter<T> {
         (rem, Some(rem))
     }
 }
+
+impl<T: Buf> ExactSizeIterator for Iter<T> { }
diff --git a/tests/test_iter.rs b/tests/test_iter.rs
new file mode 100644
index 0000000..c16dbf6
--- /dev/null
+++ b/tests/test_iter.rs
@@ -0,0 +1,22 @@
+extern crate bytes;
+
+use bytes::{Buf, IntoBuf, Bytes};
+
+#[test]
+fn iter_len() {
+    let buf = Bytes::from(&b"hello world"[..]).into_buf();
+    let iter = buf.iter();
+
+    assert_eq!(iter.size_hint(), (11, Some(11)));
+    assert_eq!(iter.len(), 11);
+}
+
+
+#[test]
+fn empty_iter_len() {
+    let buf = Bytes::from(&b""[..]).into_buf();
+    let iter = buf.iter();
+
+    assert_eq!(iter.size_hint(), (0, Some(0)));
+    assert_eq!(iter.len(), 0);
+}
-- 
GitLab