lsh_rs2/
data.rs

1//! Generic traits for numeric input and hash outputs.
2use ndarray::{LinalgScalar, ScalarOperand};
3use num::{FromPrimitive, NumCast, ToPrimitive};
4use serde::Serialize;
5use std::fmt::{Debug, Display};
6use std::cmp::{Ord, PartialEq, PartialOrd};
7use std::hash::Hash;
8use std::ops::AddAssign;
9
10pub trait Numeric:
11    LinalgScalar
12    + ScalarOperand
13    + NumCast
14    + ToPrimitive
15    + Send
16    + Sync
17    + PartialEq
18    + PartialOrd
19    + FromPrimitive
20    + AddAssign
21    + Serialize
22    + Debug
23    + Display
24{
25}
26
27impl Numeric for f32 {}
28impl Numeric for f64 {}
29impl Numeric for i8 {}
30impl Numeric for i16 {}
31impl Numeric for i32 {}
32impl Numeric for i64 {}
33impl Numeric for u8 {}
34impl Numeric for u16 {}
35impl Numeric for u32 {}
36impl Numeric for u64 {}
37
38pub trait Integer: Numeric + Ord + Eq + Hash {}
39impl Integer for u8 {}
40impl Integer for u16 {}
41impl Integer for u32 {}
42impl Integer for u64 {}
43
44impl Integer for i8 {}
45impl Integer for i16 {}
46impl Integer for i32 {}
47impl Integer for i64 {}