about summary refs log tree commit diff
path: root/library/std/src
diff options
context:
space:
mode:
authorXavientois <joshua.rampersad@hotmail.com>2021-01-16 10:42:52 -0500
committerXavientois <joshua.rampersad@hotmail.com>2021-01-31 08:31:35 -0500
commitc8e0f8aaa3e8a21158b596814d8a53cfe604a294 (patch)
tree5fedf9fd42fdda3fc5976100db13a17616469343 /library/std/src
parent7869371bf1e6ab88bb61771c5dca217cc92ba0c9 (diff)
downloadrust-c8e0f8aaa3e8a21158b596814d8a53cfe604a294.tar.gz
rust-c8e0f8aaa3e8a21158b596814d8a53cfe604a294.zip
Use fully qualified syntax to avoid dyn
Diffstat (limited to 'library/std/src')
-rw-r--r--library/std/src/io/mod.rs2
-rw-r--r--library/std/src/io/tests.rs22
2 files changed, 22 insertions, 2 deletions
diff --git a/library/std/src/io/mod.rs b/library/std/src/io/mod.rs
index d7fd811cdb6..3839f7cd28d 100644
--- a/library/std/src/io/mod.rs
+++ b/library/std/src/io/mod.rs
@@ -2467,7 +2467,7 @@ impl<R: Read> Iterator for Bytes<R> {
     }
 
     fn size_hint(&self) -> (usize, Option<usize>) {
-        (&self.inner as &dyn SizeHint).size_hint()
+        SizeHint::size_hint(&self.inner)
     }
 }
 
diff --git a/library/std/src/io/tests.rs b/library/std/src/io/tests.rs
index f176c2f088c..03ed8ba74c5 100644
--- a/library/std/src/io/tests.rs
+++ b/library/std/src/io/tests.rs
@@ -1,7 +1,7 @@
 use super::{repeat, Cursor, SeekFrom};
 use crate::cmp::{self, min};
 use crate::io::{self, IoSlice, IoSliceMut};
-use crate::io::{BufRead, Read, Seek, Write};
+use crate::io::{BufRead, BufReader, Read, Seek, Write};
 use crate::ops::Deref;
 
 #[test]
@@ -199,6 +199,26 @@ fn chain_bufread() {
 }
 
 #[test]
+fn bufreader_size_hint() {
+    let testdata = b"ABCDEFGHIJKL";
+    let mut buf_reader = BufReader::new(&testdata[..]);
+    assert_eq!(buf_reader.buffer().len(), 0);
+
+    let buffer = buf_reader.fill_buf().unwrap();
+    let buffer_length = buffer.len();
+
+    // Check that size hint matches buffer contents
+    let mut buffered_bytes = buf_reader.bytes();
+    let (lower_bound, _upper_bound) = buffered_bytes.size_hint();
+    assert_eq!(lower_bound, buffer_length);
+
+    // Check that size hint matches buffer contents after advancing
+    buffered_bytes.next().unwrap().unwrap();
+    let (lower_bound, _upper_bound) = buffered_bytes.size_hint();
+    assert_eq!(lower_bound, buffer_length - 1);
+}
+
+#[test]
 fn chain_zero_length_read_is_not_eof() {
     let a = b"A";
     let b = b"B";