use crate::gaussian_integer::GaussianInteger;
use crate::integer::Integer;
use malachite_base::num::conversion::traits::ConvertibleFrom;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct GaussianIntegerFromPrimitiveFloatError;
macro_rules! float_impls {
($f: ident) => {
impl TryFrom<$f> for GaussianInteger {
type Error = GaussianIntegerFromPrimitiveFloatError;
fn try_from(value: $f) -> Result<GaussianInteger, Self::Error> {
Integer::try_from(value)
.map(GaussianInteger::from)
.map_err(|_| GaussianIntegerFromPrimitiveFloatError)
}
}
impl ConvertibleFrom<$f> for GaussianInteger {
#[inline]
fn convertible_from(value: $f) -> bool {
Integer::convertible_from(value)
}
}
};
}
apply_to_primitive_floats!(float_impls);