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