concurrency.rs - source
Description: Source of the Rust file `library\test\src\helpers\concurrency.rs`.
Keywords: rust, rustlang, rust-lang

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14

    //! Helper module which helps to determine amount of threads to be used
    //! during tests execution.
    use std::{env, num::NonZeroUsize, thread};

    pub fn get_concurrency() -> usize {
        if let Ok(value) = env::var("RUST_TEST_THREADS") {
            match value.parse::<NonZeroUsize>().ok() {
                Some(n) => n.get(),
                _ => panic!("RUST_TEST_THREADS is `{}`, should be a positive integer.", value),
            }
        } else {
            thread::available_concurrency().map(|n| n.get()).unwrap_or(1)
        }
    }