fructose/properties/
primality.rs

1use crate::algorithms::factorization::is_prime as is_prime_algo;
2
3// TODO: make this better
4pub trait Primality {
5    fn is_irreducible(&self) -> bool;
6    fn is_prime(&self) -> bool;
7}
8
9macro_rules! impl_primality {
10    ($($set:ty)*) => {
11        $(
12            impl Primality for $set {
13                #[inline]
14                fn is_irreducible(&self) -> bool {
15                    unimplemented!()
16                }
17
18                #[inline]
19                fn is_prime(&self) -> bool {
20                    is_prime_algo(*self as u64)
21                }
22            }
23        )*
24    }
25}
26
27impl_primality!(u8 u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize f32 f64);