about summary refs log tree commit diff
path: root/library/core/src/ascii.rs
diff options
context:
space:
mode:
authorMartin Gammelsæter <martin@mg.am>2022-03-09 22:21:35 +0100
committerMartin Gammelsæter <martin@mg.am>2022-03-09 22:21:35 +0100
commit7f4f4fc34c5f404042e200c26ffb0395278d2cea (patch)
tree83e9afcf3d9683e2647ce52a267b0ae38e8488d9 /library/core/src/ascii.rs
parent876142417cd03ee0838d2fc83ddac83c06748ca6 (diff)
downloadrust-7f4f4fc34c5f404042e200c26ffb0395278d2cea.tar.gz
rust-7f4f4fc34c5f404042e200c26ffb0395278d2cea.zip
Use indexing instead of .get_unchecked() for LUT lookup
Based on @paolobarbolini's tip that the unsafe block was unnecessary in
this case.

Not much left of `hexify()` after this, so seemed clearer to just inline
it.
Diffstat (limited to 'library/core/src/ascii.rs')
-rw-r--r--library/core/src/ascii.rs16
1 files changed, 2 insertions, 14 deletions
diff --git a/library/core/src/ascii.rs b/library/core/src/ascii.rs
index 20f2dd13d8f..6acaf7e8b89 100644
--- a/library/core/src/ascii.rs
+++ b/library/core/src/ascii.rs
@@ -99,24 +99,12 @@ pub fn escape_default(c: u8) -> EscapeDefault {
         b'"' => ([b'\\', b'"', 0, 0], 2),
         b'\x20'..=b'\x7e' => ([c, 0, 0, 0], 1),
         _ => {
-            let (b1, b2) = hexify(c);
-            ([b'\\', b'x', b1, b2], 4)
+            let hex_digits: &[u8; 16] = b"0123456789abcdef";
+            ([b'\\', b'x', hex_digits[(c >> 4) as usize], hex_digits[(c & 0xf) as usize]], 4)
         }
     };
 
     return EscapeDefault { range: 0..len, data };
-
-    #[inline]
-    fn hexify(b: u8) -> (u8, u8) {
-        let hex_digits: &[u8; 16] = b"0123456789abcdef";
-        // SAFETY: For all n: u8, n >> 4 < 16 and n & 0xf < 16
-        unsafe {
-            (
-                *hex_digits.get_unchecked((b >> 4) as usize),
-                *hex_digits.get_unchecked((b & 0xf) as usize),
-            )
-        }
-    }
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]