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)