Skip to content

Commit cccd6e0

Browse files
committed
EscapeDefault: change range field to Range<u8>, reducing struct size 24 -> 6 bytes
1 parent 2b5ddf3 commit cccd6e0

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

library/core/src/ascii.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::str::from_utf8_unchecked;
2121
#[stable(feature = "rust1", since = "1.0.0")]
2222
#[derive(Clone)]
2323
pub struct EscapeDefault {
24-
range: Range<usize>,
24+
range: Range<u8>,
2525
data: [u8; 4],
2626
}
2727

@@ -114,7 +114,7 @@ pub fn escape_default(c: u8) -> EscapeDefault {
114114
impl Iterator for EscapeDefault {
115115
type Item = u8;
116116
fn next(&mut self) -> Option<u8> {
117-
self.range.next().map(|i| self.data[i])
117+
self.range.next().map(|i| self.data[i as usize])
118118
}
119119
fn size_hint(&self) -> (usize, Option<usize>) {
120120
self.range.size_hint()
@@ -126,7 +126,7 @@ impl Iterator for EscapeDefault {
126126
#[stable(feature = "rust1", since = "1.0.0")]
127127
impl DoubleEndedIterator for EscapeDefault {
128128
fn next_back(&mut self) -> Option<u8> {
129-
self.range.next_back().map(|i| self.data[i])
129+
self.range.next_back().map(|i| self.data[i as usize])
130130
}
131131
}
132132
#[stable(feature = "rust1", since = "1.0.0")]
@@ -138,7 +138,9 @@ impl FusedIterator for EscapeDefault {}
138138
impl fmt::Display for EscapeDefault {
139139
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
140140
// SAFETY: ok because `escape_default` created only valid utf-8 data
141-
f.write_str(unsafe { from_utf8_unchecked(&self.data[self.range.clone()]) })
141+
f.write_str(unsafe {
142+
from_utf8_unchecked(&self.data[(self.range.start as usize)..(self.range.end as usize)])
143+
})
142144
}
143145
}
144146

0 commit comments

Comments
 (0)