| 1 | //! Helper module which helps to determine amount of threads to be used |
|---|---|
| 2 | //! during tests execution. |
| 3 | |
| 4 | use std::num::NonZero; |
| 5 | use std::{env, thread}; |
| 6 | |
| 7 | pub(crate) fn get_concurrency() -> usize { |
| 8 | if let Ok(value) = env::var("RUST_TEST_THREADS") { |
| 9 | match value.parse::<NonZero<usize>>().ok() { |
| 10 | Some(n) => n.get(), |
| 11 | _ => panic!("RUST_TEST_THREADS is `{value}`, should be a positive integer."), |
| 12 | } |
| 13 | } else { |
| 14 | thread::available_parallelism().map(|n| n.get()).unwrap_or(1) |
| 15 | } |
| 16 | } |
| 17 |
