rust_utils/
str.rs

1use crate::sealed::Sealed;
2
3pub trait StrExt {
4    fn from_ascii_simd(bytes: &[u8]) -> Option<&str>;
5
6    fn from_utf8_simd(bytes: &[u8]) -> Option<&str>;
7}
8
9impl Sealed for str {}
10
11impl StrExt for str {
12    fn from_ascii_simd(bytes: &[u8]) -> Option<&str> {
13        // TODO(blocking): use `unicode_simd::from_ascii`
14        bytes.is_ascii().then(|| unsafe { core::str::from_utf8_unchecked(bytes) })
15    }
16
17    fn from_utf8_simd(bytes: &[u8]) -> Option<&str> {
18        simdutf8::basic::from_utf8(bytes).ok()
19    }
20}