#[cfg_attr(feature = "perf-ascii", inline)]
pub fn find_non_ascii_byte(b: &[u8]) -> Option<usize> {
#[cfg(not(feature = "perf-ascii"))]
return b.iter().position(|&b| b > 0x7F);
#[cfg(feature = "perf-ascii")]
bstr::ByteSlice::find_non_ascii_byte(b)
}
pub fn find_byte2(haystack: &[u8], needle1: u8, needle2: u8) -> Option<usize> {
#[cfg(not(feature = "perf-find"))]
return haystack.iter().position(|&b| b == needle1 || b == needle2);
#[cfg(feature = "perf-find")]
memchr::memchr2(needle1, needle2, haystack)
}
#[cfg_attr(feature = "perf-ascii", inline)]
pub fn find_byte2_or_non_ascii_byte(haystack: &[u8], needle1: u8, needle2: u8) -> Option<usize> {
if let Some(m) = find_non_ascii_byte(haystack) {
if let Some(m2) = find_byte2(unsafe { haystack.get_unchecked(..m) }, needle1, needle2) {
Some(m2)
} else {
Some(m)
}
} else {
find_byte2(haystack, needle1, needle2)
}
}