1fb6c1f39Sopenharmony_ciuse memchr::{memrchr, memrchr2, memrchr3, Memchr, Memchr2, Memchr3}; 2fb6c1f39Sopenharmony_ci 3fb6c1f39Sopenharmony_ciuse crate::memchr::{c, fallback, naive}; 4fb6c1f39Sopenharmony_ci 5fb6c1f39Sopenharmony_cipub fn memchr1_count(b1: u8, haystack: &[u8]) -> usize { 6fb6c1f39Sopenharmony_ci Memchr::new(b1, haystack).count() 7fb6c1f39Sopenharmony_ci} 8fb6c1f39Sopenharmony_ci 9fb6c1f39Sopenharmony_cipub fn memchr1_libc_count(b1: u8, haystack: &[u8]) -> usize { 10fb6c1f39Sopenharmony_ci let mut count = 0; 11fb6c1f39Sopenharmony_ci let mut start = 0; 12fb6c1f39Sopenharmony_ci while let Some(i) = c::memchr(b1, &haystack[start..]) { 13fb6c1f39Sopenharmony_ci count += 1; 14fb6c1f39Sopenharmony_ci start += i + 1; 15fb6c1f39Sopenharmony_ci } 16fb6c1f39Sopenharmony_ci count 17fb6c1f39Sopenharmony_ci} 18fb6c1f39Sopenharmony_ci 19fb6c1f39Sopenharmony_cipub fn fallback1_count(b1: u8, haystack: &[u8]) -> usize { 20fb6c1f39Sopenharmony_ci let mut count = 0; 21fb6c1f39Sopenharmony_ci let mut start = 0; 22fb6c1f39Sopenharmony_ci while let Some(i) = fallback::memchr(b1, &haystack[start..]) { 23fb6c1f39Sopenharmony_ci count += 1; 24fb6c1f39Sopenharmony_ci start += i + 1; 25fb6c1f39Sopenharmony_ci } 26fb6c1f39Sopenharmony_ci count 27fb6c1f39Sopenharmony_ci} 28fb6c1f39Sopenharmony_ci 29fb6c1f39Sopenharmony_cipub fn naive1_count(b1: u8, haystack: &[u8]) -> usize { 30fb6c1f39Sopenharmony_ci let mut count = 0; 31fb6c1f39Sopenharmony_ci let mut start = 0; 32fb6c1f39Sopenharmony_ci while let Some(i) = naive::memchr(b1, &haystack[start..]) { 33fb6c1f39Sopenharmony_ci count += 1; 34fb6c1f39Sopenharmony_ci start += i + 1; 35fb6c1f39Sopenharmony_ci } 36fb6c1f39Sopenharmony_ci count 37fb6c1f39Sopenharmony_ci} 38fb6c1f39Sopenharmony_ci 39fb6c1f39Sopenharmony_cipub fn memchr2_count(b1: u8, b2: u8, haystack: &[u8]) -> usize { 40fb6c1f39Sopenharmony_ci Memchr2::new(b1, b2, haystack).count() 41fb6c1f39Sopenharmony_ci} 42fb6c1f39Sopenharmony_ci 43fb6c1f39Sopenharmony_cipub fn fallback2_count(b1: u8, b2: u8, haystack: &[u8]) -> usize { 44fb6c1f39Sopenharmony_ci let mut count = 0; 45fb6c1f39Sopenharmony_ci let mut start = 0; 46fb6c1f39Sopenharmony_ci while let Some(i) = fallback::memchr2(b1, b2, &haystack[start..]) { 47fb6c1f39Sopenharmony_ci count += 1; 48fb6c1f39Sopenharmony_ci start += i + 1; 49fb6c1f39Sopenharmony_ci } 50fb6c1f39Sopenharmony_ci count 51fb6c1f39Sopenharmony_ci} 52fb6c1f39Sopenharmony_ci 53fb6c1f39Sopenharmony_cipub fn naive2_count(b1: u8, b2: u8, haystack: &[u8]) -> usize { 54fb6c1f39Sopenharmony_ci let mut count = 0; 55fb6c1f39Sopenharmony_ci let mut start = 0; 56fb6c1f39Sopenharmony_ci while let Some(i) = naive::memchr2(b1, b2, &haystack[start..]) { 57fb6c1f39Sopenharmony_ci count += 1; 58fb6c1f39Sopenharmony_ci start += i + 1; 59fb6c1f39Sopenharmony_ci } 60fb6c1f39Sopenharmony_ci count 61fb6c1f39Sopenharmony_ci} 62fb6c1f39Sopenharmony_ci 63fb6c1f39Sopenharmony_cipub fn memchr3_count(b1: u8, b2: u8, b3: u8, haystack: &[u8]) -> usize { 64fb6c1f39Sopenharmony_ci Memchr3::new(b1, b2, b3, haystack).count() 65fb6c1f39Sopenharmony_ci} 66fb6c1f39Sopenharmony_ci 67fb6c1f39Sopenharmony_cipub fn fallback3_count(b1: u8, b2: u8, b3: u8, haystack: &[u8]) -> usize { 68fb6c1f39Sopenharmony_ci let mut count = 0; 69fb6c1f39Sopenharmony_ci let mut start = 0; 70fb6c1f39Sopenharmony_ci while let Some(i) = fallback::memchr3(b1, b2, b3, &haystack[start..]) { 71fb6c1f39Sopenharmony_ci count += 1; 72fb6c1f39Sopenharmony_ci start += i + 1; 73fb6c1f39Sopenharmony_ci } 74fb6c1f39Sopenharmony_ci count 75fb6c1f39Sopenharmony_ci} 76fb6c1f39Sopenharmony_ci 77fb6c1f39Sopenharmony_cipub fn naive3_count(b1: u8, b2: u8, b3: u8, haystack: &[u8]) -> usize { 78fb6c1f39Sopenharmony_ci let mut count = 0; 79fb6c1f39Sopenharmony_ci let mut start = 0; 80fb6c1f39Sopenharmony_ci while let Some(i) = naive::memchr3(b1, b2, b3, &haystack[start..]) { 81fb6c1f39Sopenharmony_ci count += 1; 82fb6c1f39Sopenharmony_ci start += i + 1; 83fb6c1f39Sopenharmony_ci } 84fb6c1f39Sopenharmony_ci count 85fb6c1f39Sopenharmony_ci} 86fb6c1f39Sopenharmony_ci 87fb6c1f39Sopenharmony_cipub fn memrchr1_count(b1: u8, haystack: &[u8]) -> usize { 88fb6c1f39Sopenharmony_ci let mut count = 0; 89fb6c1f39Sopenharmony_ci let mut end = haystack.len(); 90fb6c1f39Sopenharmony_ci while let Some(i) = memrchr(b1, &haystack[..end]) { 91fb6c1f39Sopenharmony_ci count += 1; 92fb6c1f39Sopenharmony_ci end = i; 93fb6c1f39Sopenharmony_ci } 94fb6c1f39Sopenharmony_ci count 95fb6c1f39Sopenharmony_ci} 96fb6c1f39Sopenharmony_ci 97fb6c1f39Sopenharmony_ci#[cfg(all(target_os = "linux"))] 98fb6c1f39Sopenharmony_cipub fn memrchr1_libc_count(b1: u8, haystack: &[u8]) -> usize { 99fb6c1f39Sopenharmony_ci let mut count = 0; 100fb6c1f39Sopenharmony_ci let mut end = haystack.len(); 101fb6c1f39Sopenharmony_ci while let Some(i) = c::memrchr(b1, &haystack[..end]) { 102fb6c1f39Sopenharmony_ci count += 1; 103fb6c1f39Sopenharmony_ci end = i; 104fb6c1f39Sopenharmony_ci } 105fb6c1f39Sopenharmony_ci count 106fb6c1f39Sopenharmony_ci} 107fb6c1f39Sopenharmony_ci 108fb6c1f39Sopenharmony_cipub fn memrchr2_count(b1: u8, b2: u8, haystack: &[u8]) -> usize { 109fb6c1f39Sopenharmony_ci let mut count = 0; 110fb6c1f39Sopenharmony_ci let mut end = haystack.len(); 111fb6c1f39Sopenharmony_ci while let Some(i) = memrchr2(b1, b2, &haystack[..end]) { 112fb6c1f39Sopenharmony_ci count += 1; 113fb6c1f39Sopenharmony_ci end = i; 114fb6c1f39Sopenharmony_ci } 115fb6c1f39Sopenharmony_ci count 116fb6c1f39Sopenharmony_ci} 117fb6c1f39Sopenharmony_ci 118fb6c1f39Sopenharmony_cipub fn memrchr3_count(b1: u8, b2: u8, b3: u8, haystack: &[u8]) -> usize { 119fb6c1f39Sopenharmony_ci let mut count = 0; 120fb6c1f39Sopenharmony_ci let mut end = haystack.len(); 121fb6c1f39Sopenharmony_ci while let Some(i) = memrchr3(b1, b2, b3, &haystack[..end]) { 122fb6c1f39Sopenharmony_ci count += 1; 123fb6c1f39Sopenharmony_ci end = i; 124fb6c1f39Sopenharmony_ci } 125fb6c1f39Sopenharmony_ci count 126fb6c1f39Sopenharmony_ci} 127