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 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 | use memchr::memchr; |
14 | memchr(needle, haystack) |
15 | } |
16 | |
17 | imp(needle, haystack) |
18 | } |
19 | |