about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2018-03-20 05:33:59 -0400
committerPhlosioneer <mattmdrr2@gmail.com>2018-03-20 05:33:59 -0400
commit619003d1d414167630331efffe83702f74413be6 (patch)
treec986c64f37ab88feda2f7df926261e133d385aad /src/libsyntax_ext
parent6bfa7d02d6713acd15ead20c199b808e85031f9e (diff)
downloadrust-619003d1d414167630331efffe83702f74413be6.tar.gz
rust-619003d1d414167630331efffe83702f74413be6.zip
Implement some trivial size_hints for various iterators
This also implements ExactSizeIterator where applicable.

Addresses most of the Iterator traits mentioned in #23708.
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/format_foreign.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libsyntax_ext/format_foreign.rs b/src/libsyntax_ext/format_foreign.rs
index 0476d7d4fcc..e95c6f2e124 100644
--- a/src/libsyntax_ext/format_foreign.rs
+++ b/src/libsyntax_ext/format_foreign.rs
@@ -272,6 +272,11 @@ pub mod printf {
             self.s = tail;
             Some(sub)
         }
+
+        fn size_hint(&self) -> (usize, Option<usize>) {
+            // Substitutions are at least 2 characters long.
+            (0, Some(self.s.len() / 2))
+        }
     }
 
     enum State {
@@ -782,6 +787,10 @@ pub mod shell {
                 None => None,
             }
         }
+
+        fn size_hint(&self) -> (usize, Option<usize>) {
+            (0, Some(self.s.len()))
+        }
     }
 
     /// Parse the next substitution from the input string.