More conversions for SignedInteger

This commit is contained in:
Tony Garnock-Jones 2021-07-13 16:00:18 +02:00
parent 423c9d0bba
commit 7712c6e0a9
1 changed files with 38 additions and 0 deletions

View File

@ -81,6 +81,30 @@ impl SignedInteger {
}
}
impl From<i32> for SignedInteger {
fn from(v: i32) -> Self {
SignedInteger(SignedIntegerRepr::I128(v.into()))
}
}
impl From<u32> for SignedInteger {
fn from(v: u32) -> Self {
SignedInteger(SignedIntegerRepr::I128(v.into()))
}
}
impl From<i64> for SignedInteger {
fn from(v: i64) -> Self {
SignedInteger(SignedIntegerRepr::I128(v.into()))
}
}
impl From<u64> for SignedInteger {
fn from(v: u64) -> Self {
SignedInteger(SignedIntegerRepr::I128(v.into()))
}
}
impl From<i128> for SignedInteger {
fn from(v: i128) -> Self {
SignedInteger(SignedIntegerRepr::I128(v))
@ -151,6 +175,20 @@ impl<'a> From<&'a SignedInteger> for BigInt {
}
}
impl TryFrom<&SignedInteger> for i32 {
type Error = ();
fn try_from(v: &SignedInteger) -> Result<Self, Self::Error> {
i128::try_from(v)?.try_into().map_err(|_| ())
}
}
impl TryFrom<&SignedInteger> for u32 {
type Error = ();
fn try_from(v: &SignedInteger) -> Result<Self, Self::Error> {
u128::try_from(v)?.try_into().map_err(|_| ())
}
}
impl TryFrom<&SignedInteger> for i64 {
type Error = ();
fn try_from(v: &SignedInteger) -> Result<Self, Self::Error> {