Skip to content

Commit c8e0f8a

Browse files
committed
Use fully qualified syntax to avoid dyn
1 parent 7869371 commit c8e0f8a

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

library/std/src/io/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2467,7 +2467,7 @@ impl<R: Read> Iterator for Bytes<R> {
24672467
}
24682468

24692469
fn size_hint(&self) -> (usize, Option<usize>) {
2470-
(&self.inner as &dyn SizeHint).size_hint()
2470+
SizeHint::size_hint(&self.inner)
24712471
}
24722472
}
24732473

library/std/src/io/tests.rs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::{repeat, Cursor, SeekFrom};
22
use crate::cmp::{self, min};
33
use crate::io::{self, IoSlice, IoSliceMut};
4-
use crate::io::{BufRead, Read, Seek, Write};
4+
use crate::io::{BufRead, BufReader, Read, Seek, Write};
55
use crate::ops::Deref;
66

77
#[test]
@@ -198,6 +198,26 @@ fn chain_bufread() {
198198
cmp_bufread(chain1, chain2, &testdata[..]);
199199
}
200200

201+
#[test]
202+
fn bufreader_size_hint() {
203+
let testdata = b"ABCDEFGHIJKL";
204+
let mut buf_reader = BufReader::new(&testdata[..]);
205+
assert_eq!(buf_reader.buffer().len(), 0);
206+
207+
let buffer = buf_reader.fill_buf().unwrap();
208+
let buffer_length = buffer.len();
209+
210+
// Check that size hint matches buffer contents
211+
let mut buffered_bytes = buf_reader.bytes();
212+
let (lower_bound, _upper_bound) = buffered_bytes.size_hint();
213+
assert_eq!(lower_bound, buffer_length);
214+
215+
// Check that size hint matches buffer contents after advancing
216+
buffered_bytes.next().unwrap().unwrap();
217+
let (lower_bound, _upper_bound) = buffered_bytes.size_hint();
218+
assert_eq!(lower_bound, buffer_length - 1);
219+
}
220+
201221
#[test]
202222
fn chain_zero_length_read_is_not_eof() {
203223
let a = b"A";

0 commit comments

Comments
 (0)