pub mod gemm;
pub mod heap_structures;
pub mod macros;
pub mod matrix_utils;
pub mod r_rust_interface;
pub mod simd;
pub mod traits;
pub mod vec_utils;
use faer::Par;
use rustc_hash::{FxBuildHasher, FxHashSet};
use std::num::NonZeroUsize;
use std::sync::OnceLock;
pub fn string_vec_to_set(x: &[String]) -> FxHashSet<&String> {
let mut set = FxHashSet::with_capacity_and_hasher(x.len(), FxBuildHasher);
for s in x {
set.insert(s);
}
set
}
#[inline]
pub fn faer_parallelism() -> Par {
static N_THREADS: OnceLock<NonZeroUsize> = OnceLock::new();
Par::Rayon(*N_THREADS.get_or_init(|| std::thread::available_parallelism().unwrap()))
}