use crate::simd::SimdByteFunctions;
#[inline]
pub fn replace_all_bytes<T>(v: &mut [T], needle: T, replacement: T)
where
T: Copy + PartialEq, {
for b in v.iter_mut() {
if *b == needle {
*b = replacement;
}
}
}
#[inline]
#[cfg_attr(feature = "multiversion", multiversion::multiversion(targets = "simd"))]
pub fn replace_all_bytes_simd<const N: usize>(haystack: &mut [u8], needle: u8, replacement: u8) {
let (pre, mid, sfx) = haystack.as_simd_mut::<N>();
replace_all_bytes(pre, needle, replacement);
for v in mid.iter_mut() {
v.if_value_then_replace(needle, replacement);
}
replace_all_bytes(sfx, needle, replacement);
}