about summary refs log tree commit diff
path: root/library/core/src/ascii.rs
diff options
context:
space:
mode:
authorThe 8472 <git@infinite-source.de>2023-06-21 20:49:18 +0200
committerThe 8472 <git@infinite-source.de>2023-06-29 01:55:03 +0200
commit6c87448b57890eabd11103fcb2ab8f5e687a02cc (patch)
tree1ec2967208e35e6b308a77939a6b49a49e4bca09 /library/core/src/ascii.rs
parent5ea66686467d3ec5f8c81570e7f0f16ad8dd8cc3 (diff)
downloadrust-6c87448b57890eabd11103fcb2ab8f5e687a02cc.tar.gz
rust-6c87448b57890eabd11103fcb2ab8f5e687a02cc.zip
optimize Cstr/EscapeAscii display
old:
    ascii::bench_ascii_escape_display_mixed      17.97µs/iter +/- 204.00ns
    ascii::bench_ascii_escape_display_no_escape 545.00ns/iter   +/- 6.00ns
new:
    ascii::bench_ascii_escape_display_mixed      4.99µs/iter +/- 56.00ns
    ascii::bench_ascii_escape_display_no_escape 91.00ns/iter  +/- 1.00ns
Diffstat (limited to 'library/core/src/ascii.rs')
-rw-r--r--library/core/src/ascii.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/library/core/src/ascii.rs b/library/core/src/ascii.rs
index ef8e4d098ed..02867789b79 100644
--- a/library/core/src/ascii.rs
+++ b/library/core/src/ascii.rs
@@ -96,6 +96,17 @@ pub fn escape_default(c: u8) -> EscapeDefault {
     EscapeDefault(escape::EscapeIterInner::new(data, range))
 }
 
+impl EscapeDefault {
+    pub(crate) fn empty() -> Self {
+        let data = [Char::Null; 4];
+        EscapeDefault(escape::EscapeIterInner::new(data, 0..0))
+    }
+
+    pub(crate) fn as_str(&self) -> &str {
+        self.0.as_str()
+    }
+}
+
 #[stable(feature = "rust1", since = "1.0.0")]
 impl Iterator for EscapeDefault {
     type Item = u8;