1#[cfg(feature = "parallel")]
9pub use rayon::prelude::*;
10
11#[cfg(feature = "parallel")]
13#[macro_export]
14macro_rules! maybe_par_iter {
15 ($slice:expr) => {
16 $slice.par_iter()
17 };
18}
19
20#[cfg(not(feature = "parallel"))]
21#[macro_export]
22macro_rules! maybe_par_iter {
23 ($slice:expr) => {
24 $slice.iter()
25 };
26}
27
28#[cfg(feature = "parallel")]
30#[macro_export]
31macro_rules! maybe_par_iter_mut {
32 ($slice:expr) => {
33 $slice.par_iter_mut()
34 };
35}
36
37#[cfg(not(feature = "parallel"))]
38#[macro_export]
39macro_rules! maybe_par_iter_mut {
40 ($slice:expr) => {
41 $slice.iter_mut()
42 };
43}
44
45#[cfg(feature = "parallel")]
47#[macro_export]
48macro_rules! maybe_par_chunks_mut {
49 ($slice:expr, $chunk_size:expr) => {
50 $slice.par_chunks_mut($chunk_size)
51 };
52}
53
54#[cfg(not(feature = "parallel"))]
55#[macro_export]
56macro_rules! maybe_par_chunks_mut {
57 ($slice:expr, $chunk_size:expr) => {
58 $slice.chunks_mut($chunk_size)
59 };
60}
61
62#[cfg(feature = "parallel")]
69#[macro_export]
70macro_rules! maybe_par_chunks {
71 ($slice:expr, $chunk_size:expr) => {
72 $slice.par_chunks($chunk_size)
73 };
74}
75
76#[cfg(not(feature = "parallel"))]
77#[macro_export]
78macro_rules! maybe_par_chunks {
79 ($slice:expr, $chunk_size:expr) => {
80 $slice.chunks($chunk_size)
81 };
82}
83
84#[cfg(feature = "parallel")]
93#[macro_export]
94macro_rules! maybe_par_map_init {
95 ($slice:expr, $init:expr, $f:expr) => {
96 $slice.par_iter().map_init($init, $f)
97 };
98}
99
100#[cfg(not(feature = "parallel"))]
101#[macro_export]
102macro_rules! maybe_par_map_init {
103 ($slice:expr, $init:expr, $f:expr) => {{
104 let mut state = ($init)();
105 let mut f = $f;
106 $slice.iter().map(move |item| f(&mut state, item))
107 }};
108}