about summary refs log tree commit diff
path: root/library/core/src/ascii.rs
diff options
context:
space:
mode:
authorklensy <klensy@users.noreply.github.com>2021-09-16 18:10:04 +0300
committerklensy <klensy@users.noreply.github.com>2021-09-18 14:20:00 +0300
commitcccd6e0e830fcaaa5891102f48b10786c24a2fe5 (patch)
tree9a72d17e95b5884a8a85dbdaa612dc4025e1342d /library/core/src/ascii.rs
parent2b5ddf36fdc784106b3a064d93dd054c32b1f10f (diff)
downloadrust-cccd6e0e830fcaaa5891102f48b10786c24a2fe5.tar.gz
rust-cccd6e0e830fcaaa5891102f48b10786c24a2fe5.zip
EscapeDefault: change `range` field to `Range<u8>`, reducing struct size 24 -> 6 bytes
Diffstat (limited to 'library/core/src/ascii.rs')
-rw-r--r--library/core/src/ascii.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/library/core/src/ascii.rs b/library/core/src/ascii.rs
index 4780d8dc788..0a456ee1eb2 100644
--- a/library/core/src/ascii.rs
+++ b/library/core/src/ascii.rs
@@ -21,7 +21,7 @@ use crate::str::from_utf8_unchecked;
 #[stable(feature = "rust1", since = "1.0.0")]
 #[derive(Clone)]
 pub struct EscapeDefault {
-    range: Range<usize>,
+    range: Range<u8>,
     data: [u8; 4],
 }
 
@@ -114,7 +114,7 @@ pub fn escape_default(c: u8) -> EscapeDefault {
 impl Iterator for EscapeDefault {
     type Item = u8;
     fn next(&mut self) -> Option<u8> {
-        self.range.next().map(|i| self.data[i])
+        self.range.next().map(|i| self.data[i as usize])
     }
     fn size_hint(&self) -> (usize, Option<usize>) {
         self.range.size_hint()
@@ -126,7 +126,7 @@ impl Iterator for EscapeDefault {
 #[stable(feature = "rust1", since = "1.0.0")]
 impl DoubleEndedIterator for EscapeDefault {
     fn next_back(&mut self) -> Option<u8> {
-        self.range.next_back().map(|i| self.data[i])
+        self.range.next_back().map(|i| self.data[i as usize])
     }
 }
 #[stable(feature = "rust1", since = "1.0.0")]
@@ -138,7 +138,9 @@ impl FusedIterator for EscapeDefault {}
 impl fmt::Display for EscapeDefault {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         // SAFETY: ok because `escape_default` created only valid utf-8 data
-        f.write_str(unsafe { from_utf8_unchecked(&self.data[self.range.clone()]) })
+        f.write_str(unsafe {
+            from_utf8_unchecked(&self.data[(self.range.start as usize)..(self.range.end as usize)])
+        })
     }
 }