diff --git a/src/lib.rs b/src/lib.rs index 7331040..cc61fda 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -160,13 +160,16 @@ impl fmt::Display for Fraction { impl From for Fraction { fn from(value: i32) -> Self { - todo!() + Fraction { + num: value.into(), + den: 1, + } } } impl From for Fraction { fn from(value: i64) -> Self { - todo!() + Fraction { num: value, den: 1 } } } @@ -174,7 +177,14 @@ impl TryFrom<(i32, i32)> for Fraction { type Error = FractionError; fn try_from(value: (i32, i32)) -> Result { - todo!() + if value.1 == 0 { + return Err(FractionError::ZeroDenominator); + } + + Ok(Fraction { + num: value.0.into(), + den: value.1.into(), + }) } } @@ -182,7 +192,14 @@ impl TryFrom<(i64, i64)> for Fraction { type Error = FractionError; fn try_from(value: (i64, i64)) -> Result { - todo!() + if value.1 == 0 { + return Err(FractionError::ZeroDenominator); + } + + Ok(Fraction { + num: value.0, + den: value.1, + }) } }