From c7b252ca9d2aafc8a50d1e16f37bd2c889dbd462 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 3 Jul 2021 08:59:22 +0200 Subject: [PATCH] More TryFrom<&SignedInteger> implementations --- .../preserves/src/value/signed_integer.rs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/implementations/rust/preserves/src/value/signed_integer.rs b/implementations/rust/preserves/src/value/signed_integer.rs index 4d38dd7..7dde714 100644 --- a/implementations/rust/preserves/src/value/signed_integer.rs +++ b/implementations/rust/preserves/src/value/signed_integer.rs @@ -144,3 +144,31 @@ impl<'a> From<&'a SignedInteger> for BigInt { } } } + +impl TryFrom<&SignedInteger> for i64 { + type Error = (); + fn try_from(v: &SignedInteger) -> Result { + i128::try_from(v)?.try_into().map_err(|_| ()) + } +} + +impl TryFrom<&SignedInteger> for u64 { + type Error = (); + fn try_from(v: &SignedInteger) -> Result { + u128::try_from(v)?.try_into().map_err(|_| ()) + } +} + +impl TryFrom<&SignedInteger> for isize { + type Error = (); + fn try_from(v: &SignedInteger) -> Result { + i128::try_from(v)?.try_into().map_err(|_| ()) + } +} + +impl TryFrom<&SignedInteger> for usize { + type Error = (); + fn try_from(v: &SignedInteger) -> Result { + u128::try_from(v)?.try_into().map_err(|_| ()) + } +}