Rollup merge of #86202 - a1phyr:spec_io_bytes_size_hint, r=m-ou-se
Specialize `io::Bytes::size_hint` for more types Improve the result of `<io::Bytes as Iterator>::size_hint` for some readers. I did not manage to specialize `SizeHint` for `io::Cursor` Side question: would it be interesting for `io::Read` to have an optional `size_hint` method ?
This commit is contained in:
@@ -224,6 +224,24 @@ fn empty_size_hint() {
|
||||
assert_eq!(size_hint, (0, Some(0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn slice_size_hint() {
|
||||
let size_hint = (&[1, 2, 3]).bytes().size_hint();
|
||||
assert_eq!(size_hint, (3, Some(3)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn take_size_hint() {
|
||||
let size_hint = (&[1, 2, 3]).take(2).bytes().size_hint();
|
||||
assert_eq!(size_hint, (2, Some(2)));
|
||||
|
||||
let size_hint = (&[1, 2, 3]).take(4).bytes().size_hint();
|
||||
assert_eq!(size_hint, (3, Some(3)));
|
||||
|
||||
let size_hint = io::repeat(0).take(3).bytes().size_hint();
|
||||
assert_eq!(size_hint, (3, Some(3)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn chain_empty_size_hint() {
|
||||
let chain = io::empty().chain(io::empty());
|
||||
@@ -242,7 +260,7 @@ fn chain_size_hint() {
|
||||
|
||||
let chain = buf_reader_1.chain(buf_reader_2);
|
||||
let size_hint = chain.bytes().size_hint();
|
||||
assert_eq!(size_hint, (testdata.len(), None));
|
||||
assert_eq!(size_hint, (testdata.len(), Some(testdata.len())));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user