about summary refs log tree commit diff
path: root/src/libstd/sys_common/wtf8.rs
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2020-05-12 20:09:55 -0700
committerJosh Stone <jistone@redhat.com>2020-05-29 17:05:17 -0700
commit6700e186883a83008963d1fdba23eff2b1713e56 (patch)
tree31702ed67d9ef755072500da89ff52bd146b19b1 /src/libstd/sys_common/wtf8.rs
parent4bd32c98047a809ba5fd1fac2aa044638e5f2105 (diff)
downloadrust-6700e186883a83008963d1fdba23eff2b1713e56.tar.gz
rust-6700e186883a83008963d1fdba23eff2b1713e56.zip
Add Extend::{extend_one,extend_reserve}
This adds new optional methods on `Extend`: `extend_one` add a single
element to the collection, and `extend_reserve` pre-allocates space for
the predicted number of incoming elements. These are used in `Iterator`
for `partition` and `unzip` as they shuffle elements one-at-a-time into
their respective collections.
Diffstat (limited to 'src/libstd/sys_common/wtf8.rs')
-rw-r--r--src/libstd/sys_common/wtf8.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libstd/sys_common/wtf8.rs b/src/libstd/sys_common/wtf8.rs
index a98407da448..a5ba3daba3e 100644
--- a/src/libstd/sys_common/wtf8.rs
+++ b/src/libstd/sys_common/wtf8.rs
@@ -386,6 +386,17 @@ impl Extend<CodePoint> for Wtf8Buf {
         self.bytes.reserve(low);
         iterator.for_each(move |code_point| self.push(code_point));
     }
+
+    #[inline]
+    fn extend_one(&mut self, code_point: CodePoint) {
+        self.push(code_point);
+    }
+
+    #[inline]
+    fn extend_reserve(&mut self, additional: usize) {
+        // Lower bound of one byte per code point (ASCII only)
+        self.bytes.reserve(additional);
+    }
 }
 
 /// A borrowed slice of well-formed WTF-8 data.