| 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 | |