Chih-Hung Hsieh | e42c505 | 2020-04-16 10:44:21 -0700 | [diff] [blame] | 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 | } |