edit/simd/
mod.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Provides various high-throughput utilities.
5
6pub 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    // Knuth's MMIX LCG
19    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}