From d23eb49ec23359190cfbc7a752e81a89827856a2 Mon Sep 17 00:00:00 2001 From: cactter Date: Fri, 22 Jul 2022 08:27:51 +0800 Subject: [PATCH] Shrink unsafe block --- src/macros.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/macros.rs b/src/macros.rs index 74f70759..24f1193a 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -157,22 +157,22 @@ pub fn _cssparser_internal_to_lowercase<'a>( input: &'a str, first_uppercase: usize, ) -> &'a str { - unsafe { + // This cast doesn't change the pointer's validity // since `u8` has the same layout as `MaybeUninit`: - let input_bytes = &*(input.as_bytes() as *const [u8] as *const [MaybeUninit]); + let input_bytes = unsafe { &*(input.as_bytes() as *const [u8] as *const [MaybeUninit]) }; buffer.copy_from_slice(&*input_bytes); // Same as above re layout, plus these bytes have been initialized: - let buffer = &mut *(buffer as *mut [MaybeUninit] as *mut [u8]); + let buffer = unsafe { &mut *(buffer as *mut [MaybeUninit] as *mut [u8]) }; buffer[first_uppercase..].make_ascii_lowercase(); // `buffer` was initialized to a copy of `input` // (which is `&str` so well-formed UTF-8) // then ASCII-lowercased (which preserves UTF-8 well-formedness): - ::std::str::from_utf8_unchecked(buffer) - } + unsafe { ::std::str::from_utf8_unchecked(buffer) } + } Some(