The only error case was when std::thread::available_parallelism()
returned an error, which now defaults to emitting a warning and returning 1 instead.
EFY2CITFEAIGNPBPNXY3RV4LONYYSXKBNWPVPHKTCHCFK2OBQ5AAC
OGJFEWHUMFIZYBS456FPNUN3KEUDZXIJNFGPEMJGQDC7INZMHQZQC
L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
TYAKEAJLABCZQDYAI4YBGIJNQ7HJS4DVULEGPCZOGJPJUYYNR6TAC
DDJO7X2P2BAJSXPOE6ODKAJM7GRWKPT36WWTUZ373ZWQRYU4CFIAC
ABQDWHNGSBF2REQDCGXSBFAU4RUMXYAF2KHJ5O3D32M7Z3A3FEDAC
(n as usize / (2 * std::thread::available_parallelism()?.get())).max(1)
let available_parallelism = match std::thread::available_parallelism() {
Ok(available_parallelism) => available_parallelism.get(),
Err(error) => {
warn!("Failed to get available parallelism: {error}");
1
}
};
(n as usize / (2 * available_parallelism)).max(1)