@@ -1142,6 +1142,14 @@ impl core::str::FromStr for U512 {
1142
1142
}
1143
1143
}
1144
1144
1145
+ impl From < super :: u256:: U256 > for U512 {
1146
+ #[ inline]
1147
+ fn from ( value : super :: u256:: U256 ) -> Self {
1148
+ let val = value. get_raw ( ) ;
1149
+ Self ( [ 0 , 0 , 0 , 0 , val[ 0 ] , val[ 1 ] , val[ 2 ] , val[ 3 ] ] )
1150
+ }
1151
+ }
1152
+
1145
1153
impl From < u128 > for U512 {
1146
1154
#[ inline]
1147
1155
fn from ( value : u128 ) -> Self {
@@ -1184,6 +1192,13 @@ impl From<U512> for u128 {
1184
1192
}
1185
1193
}
1186
1194
1195
+ impl From < U512 > for super :: u256:: U256 {
1196
+ #[ inline]
1197
+ fn from ( value : U512 ) -> Self {
1198
+ Self :: raw ( [ value. 0 [ 4 ] , value. 0 [ 5 ] , value. 0 [ 6 ] , value. 0 [ 7 ] ] )
1199
+ }
1200
+ }
1201
+
1187
1202
impl Into < u64 > for U512 {
1188
1203
#[ inline]
1189
1204
fn into ( self ) -> u64 {
@@ -1591,8 +1606,8 @@ mod test {
1591
1606
// Equal to 115792089237316195423570985008687907852837564279074904382605163141518161494337
1592
1607
let value = U512 :: from_string ( "115792089237316195423570985008687907852837564279074904382605163141518161494337" ) ?;
1593
1608
assert_eq ! (
1594
- value. 0 ,
1595
- [
1609
+ value,
1610
+ U512 ( [
1596
1611
0 ,
1597
1612
0 ,
1598
1613
0 ,
@@ -1601,13 +1616,13 @@ mod test {
1601
1616
18446744073709551614 ,
1602
1617
13451932020343611451 ,
1603
1618
13822214165235122497
1604
- ]
1619
+ ] )
1605
1620
) ;
1606
1621
1607
1622
let value = U512 :: from_string ( "16983810465656793445178183341822322175883642221536626637512293983324" ) ?;
1608
1623
assert_eq ! (
1609
- value. 0 ,
1610
- [
1624
+ value,
1625
+ U512 ( [
1611
1626
0 ,
1612
1627
0 ,
1613
1628
0 ,
@@ -1616,14 +1631,14 @@ mod test {
1616
1631
0x4df099df30fc28a1 ,
1617
1632
0x69a467e9e47075a9 ,
1618
1633
0x0f7e650eb6b7a45c
1619
- ]
1634
+ ] )
1620
1635
) ;
1621
1636
1622
1637
// Max value of 256-bit number
1623
1638
let value = U512 :: from_string ( "115792089237316195423570985008687907853269984665640564039457584007913129639935" ) ?;
1624
1639
assert_eq ! (
1625
- value. 0 ,
1626
- [
1640
+ value,
1641
+ U512 ( [
1627
1642
0 ,
1628
1643
0 ,
1629
1644
0 ,
@@ -1632,7 +1647,7 @@ mod test {
1632
1647
0xFFFF_FFFF_FFFF_FFFF ,
1633
1648
0xFFFF_FFFF_FFFF_FFFF ,
1634
1649
0xFFFF_FFFF_FFFF_FFFF ,
1635
- ]
1650
+ ] )
1636
1651
) ;
1637
1652
1638
1653
// Max value of 512-bit number
@@ -1760,9 +1775,7 @@ mod test {
1760
1775
1761
1776
assert_eq ! (
1762
1777
c,
1763
- U512 :: from_string(
1764
- "6270385922947262222347954536162455298520515727022267860678267425509717888"
1765
- ) ?
1778
+ "6270385922947262222347954536162455298520515727022267860678267425509717888" . parse:: <U512 >( ) ?
1766
1779
) ;
1767
1780
1768
1781
Ok ( ( ) )
0 commit comments