use crate::rational_polynomial::RationalPolynomial;
use malachite_base::num::conversion::traits::ConvertibleFrom;
use malachite_nz::natural_polynomial::NaturalPolynomial;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct NaturalPolynomialFromRationalPolynomialError;
impl TryFrom<RationalPolynomial> for NaturalPolynomial {
type Error = NaturalPolynomialFromRationalPolynomialError;
fn try_from(p: RationalPolynomial) -> Result<Self, Self::Error> {
if p.denominator == 1u32 {
Self::try_from(p.numerator).map_err(|_| NaturalPolynomialFromRationalPolynomialError)
} else {
Err(NaturalPolynomialFromRationalPolynomialError)
}
}
}
impl TryFrom<&RationalPolynomial> for NaturalPolynomial {
type Error = NaturalPolynomialFromRationalPolynomialError;
fn try_from(p: &RationalPolynomial) -> Result<Self, Self::Error> {
if p.denominator == 1u32 {
Self::try_from(&p.numerator).map_err(|_| NaturalPolynomialFromRationalPolynomialError)
} else {
Err(NaturalPolynomialFromRationalPolynomialError)
}
}
}
impl ConvertibleFrom<&RationalPolynomial> for NaturalPolynomial {
#[inline]
fn convertible_from(p: &RationalPolynomial) -> bool {
p.denominator == 1u32 && Self::convertible_from(&p.numerator)
}
}