From e79d93aa9d20a90358789f872994bc8cefa2779e Mon Sep 17 00:00:00 2001 From: laentropia Date: Mon, 27 Apr 2026 18:01:48 -0600 Subject: [PATCH] addition: TryInto i64 --- src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index cc61fda..08ffd44 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,7 @@ pub enum FractionError { DivisionByZero, ZeroDenominator, Overflow, + InvalidInteger, } impl fmt::Display for FractionError { @@ -18,6 +19,7 @@ impl fmt::Display for FractionError { FractionError::DivisionByZero => write!(f, "Division by zero"), FractionError::ZeroDenominator => write!(f, "Denominator can't be zero"), FractionError::Overflow => write!(f, "Numeric overflow"), + FractionError::InvalidInteger => write!(f, "Can't convert to integer"), } } } @@ -203,6 +205,18 @@ impl TryFrom<(i64, i64)> for Fraction { } } +impl TryInto for Fraction { + type Error = FractionError; + + fn try_into(self) -> Result { + if self.den != 1 { + return Err(FractionError::InvalidInteger); + } + + Ok(self.num) + } +} + #[cfg(test)] mod tests { use super::*;