pointy/
float.rs

1// float.rs
2//
3// Copyright (c) 2021  Douglas P Lau
4//
5use std::fmt::Debug;
6use std::ops::{Add, Div, Mul, Neg, Sub};
7
8/// Floating point component type
9pub trait Float:
10    num_traits::Float
11    + num_traits::FloatConst
12    + Add<Output = Self>
13    + Div<Output = Self>
14    + Mul<Output = Self>
15    + Neg<Output = Self>
16    + Sub<Output = Self>
17    + Debug
18    + Default
19    + Copy
20    + Clone
21    + Sized
22{
23    /// Calculate linear interpolation of two values
24    ///
25    /// The t value should be between 0 and 1.
26    fn lerp(self, rhs: Self, t: Self) -> Self {
27        rhs + (self - rhs) * t
28    }
29}
30
31impl Float for f32 {}
32impl Float for f64 {}