From f4273659a28f2d1f82cc30bbcad69d833383c23d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 24 Jul 2022 21:34:03 -0700 Subject: [PATCH 1/2] Add test of ineffective TokenStream size_hint --- tests/test.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/test.rs b/tests/test.rs index 86031db6..99874e9a 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -547,6 +547,13 @@ fn default_tokenstream_is_empty() { assert!(default_token_stream.is_empty()); } +#[test] +fn tokenstream_size_hint() { + let tokens = "a b (c d) e".parse::().unwrap(); + + assert_eq!(tokens.into_iter().size_hint(), (0, None)); // FIXME +} + #[test] fn tuple_indexing() { // This behavior may change depending on https://github.com/rust-lang/rust/pull/71322 From 25a20e06717af8990d3c7c24392f60ab1e355ae2 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 24 Jul 2022 21:12:56 -0700 Subject: [PATCH 2/2] Expose size_hint() for TokenStream's iterator --- src/lib.rs | 4 ++++ tests/test.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 5d07b720..e06f0bfa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1290,6 +1290,10 @@ pub mod token_stream { fn next(&mut self) -> Option { self.inner.next() } + + fn size_hint(&self) -> (usize, Option) { + self.inner.size_hint() + } } impl Debug for IntoIter { diff --git a/tests/test.rs b/tests/test.rs index 99874e9a..31d9a8df 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -551,7 +551,7 @@ fn default_tokenstream_is_empty() { fn tokenstream_size_hint() { let tokens = "a b (c d) e".parse::().unwrap(); - assert_eq!(tokens.into_iter().size_hint(), (0, None)); // FIXME + assert_eq!(tokens.into_iter().size_hint(), (4, Some(4))); } #[test]