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