diff options
| author | Martin Gammelsæter <martin@mg.am> | 2022-03-09 22:21:35 +0100 |
|---|---|---|
| committer | Martin Gammelsæter <martin@mg.am> | 2022-03-09 22:21:35 +0100 |
| commit | 7f4f4fc34c5f404042e200c26ffb0395278d2cea (patch) | |
| tree | 83e9afcf3d9683e2647ce52a267b0ae38e8488d9 /library/core/src/ascii.rs | |
| parent | 876142417cd03ee0838d2fc83ddac83c06748ca6 (diff) | |
| download | rust-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.rs | 16 |
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")] |
