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 {}