#![allow(dead_code, deprecated, unused_variables, unused_mut)] fn prepare_inputs(divisors: &mut Vec) { divisors.retain(|divisor| *divisor != 0) } /// # Safety /// All elements of `divisor` must be non-zero. unsafe fn do_computation(i: u32, divisors: &[u32]) -> u32 { divisors .iter() .fold( i, |acc, divisor| { if *divisor == 0 { unsafe { std::hint::unreachable_unchecked() } } acc / divisor }, ) } fn main() { let mut divisors = vec![2, 0, 4]; prepare_inputs(&mut divisors); let result = unsafe { do_computation(100, &divisors) }; assert_eq!(result, 12); }