gee
pub fn lerp<T, U, V, F>(a: T, b: T, f: F) -> T where T: Sub<&'a T, Output = U>, U: Mul<F, Output = V>, V: Add<T, Output = T>,