From 448063f09512f5124777d4ea608839bdf7841c74 Mon Sep 17 00:00:00 2001 From: Thomas Tanon Date: Tue, 28 Jul 2026 07:44:35 +0200 Subject: [PATCH] Skip redundant UTF-8 validation for numbers --- src/read.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/read.rs b/src/read.rs index 167d428..4bef1a0 100644 --- a/src/read.rs +++ b/src/read.rs @@ -1130,8 +1130,12 @@ impl JsonLexer { next_byte_offset += read_digits(&input_buffer[next_byte_offset..], is_ending)?; } self.file_offset += u64::try_from(next_byte_offset).unwrap(); + // SAFETY: Every byte consumed above is one of `-`, `+`, `.`, `e`, `E`, + // or an ASCII digit, so the token is valid UTF-8. + #[allow(unsafe_code)] + let number = unsafe { str::from_utf8_unchecked(&input_buffer[..next_byte_offset]) }; Some(Ok(JsonToken::Number(Cow::Borrowed( - str::from_utf8(&input_buffer[..next_byte_offset]).unwrap(), + number, )))) }