veloren_common/util/
div.rs

1/// Divides two floats or returns `None` if the denominator is zero or if any
2/// inputs are `NaN`. Rust provides `checked_div`, but not for floats, so this
3/// function is needed.
4///
5/// Here is an example:
6///
7/// ```
8/// use veloren_common::util::div::checked_div;
9///
10/// assert!(checked_div(50.0_f32, 0.0_f32).is_none());
11/// ```
12pub fn checked_div<T>(num: T, den: T) -> Option<T>
13where
14    T: num_traits::Float,
15{
16    if den.is_zero() || den.is_nan() || num.is_nan() {
17        None
18    } else {
19        Some(num / den)
20    }
21}