1 | /// Searches for the given needle in the given haystack. |
2 | /// |
3 | /// If the perf-literal feature is enabled, then this uses the super optimized |
4 | /// memchr crate. Otherwise, it uses the naive byte-at-a-time implementation. |
5 | pub(crate) fn find_byte(needle: u8, haystack: &[u8]) -> Option<usize> { |
6 | #[cfg (not(feature = "perf-literal" ))] |
7 | fn imp(needle: u8, haystack: &[u8]) -> Option<usize> { |
8 | haystack.iter().position(|&b| b == needle) |
9 | } |
10 | |
11 | #[cfg (feature = "perf-literal" )] |
12 | fn imp(needle: u8, haystack: &[u8]) -> Option<usize> { |
13 | memchr::memchr(needle, haystack) |
14 | } |
15 | |
16 | imp(needle, haystack) |
17 | } |
18 | |