Skip to main content

radiate_utils/primitives/
mod.rs

1mod float;
2mod integer;
3
4use std::fmt::{Debug, Display};
5
6pub use float::Float;
7pub use integer::Integer;
8use num_traits::{Num, NumCast};
9use rand::distr::uniform::SampleUniform;
10
11pub trait Primitive:
12    Num + NumCast + Copy + PartialEq + SampleUniform + Debug + Display + Default
13{
14    const HALF: Self;
15
16    fn safe_add(self, rhs: Self) -> Self;
17    fn safe_sub(self, rhs: Self) -> Self;
18    fn safe_mul(self, rhs: Self) -> Self;
19    fn safe_div(self, rhs: Self) -> Self;
20    fn safe_mean(self, rhs: Self) -> Self;
21
22    fn extract<T: NumCast>(self) -> Option<T> {
23        T::from(self)
24    }
25}