1pub mod lines_bwd;
7pub mod lines_fwd;
8mod memchr2;
9mod memset;
10
11pub use lines_bwd::*;
12pub use lines_fwd::*;
13pub use memchr2::*;
14pub use memset::*;
15
16#[cfg(test)]
17mod test {
18 pub fn make_rng() -> impl FnMut() -> usize {
20 let mut state = 1442695040888963407u64;
21 move || {
22 state = state.wrapping_mul(6364136223846793005).wrapping_add(1442695040888963407);
23 state as usize
24 }
25 }
26
27 pub fn generate_random_text(len: usize) -> String {
28 const ALPHABET: &[u8; 20] = b"0123456789abcdef\n\n\n\n";
29
30 let mut rng = make_rng();
31 let mut res = String::new();
32
33 for _ in 0..len {
34 res.push(ALPHABET[rng() % ALPHABET.len()] as char);
35 }
36
37 res
38 }
39
40 pub fn count_lines(text: &str) -> usize {
41 text.lines().count()
42 }
43}