From 8341fb7d3385b7a90357be49e614cfd86313f85c Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Sat, 4 Mar 2023 13:32:42 +0100 Subject: [PATCH] feat: add b256<->u256 from impls --- crates/primitives/src/bits.rs | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/crates/primitives/src/bits.rs b/crates/primitives/src/bits.rs index 636c836798..31b7d69ba7 100644 --- a/crates/primitives/src/bits.rs +++ b/crates/primitives/src/bits.rs @@ -54,6 +54,32 @@ impl From for primitive_types::H256 { } } +impl From for B256 { + fn from(fr: primitive_types::U256) -> Self { + let mut ret = B256::zero(); + fr.to_big_endian(ret.as_bytes_mut()); + ret + } +} + +impl From for primitive_types::U256 { + fn from(fr: B256) -> Self { + primitive_types::U256::from(fr.as_ref() as &[u8]) + } +} + +impl From for B256 { + fn from(fr: ruint::aliases::U256) -> Self { + B256(fr.to_be_bytes()) + } +} + +impl From for ruint::aliases::U256 { + fn from(fr: B256) -> Self { + ruint::aliases::U256::from_be_bytes(fr.0) + } +} + impl_fixed_hash_conversions!(B256, B160); #[cfg(feature = "serde")] @@ -331,4 +357,20 @@ mod tests { let new_b256: B256 = h256.into(); assert_eq!(b256, new_b256) } + + #[test] + fn should_convert_to_primitive_types_h256_u256() { + let b256 = B256::random(); + let u256: primitive_types::U256 = b256.into(); + let new_b256: B256 = u256.into(); + assert_eq!(b256, new_b256) + } + + #[test] + fn should_convert_to_ruint_u256() { + let b256 = B256::random(); + let u256: ruint::aliases::U256 = b256.into(); + let new_b256: B256 = u256.into(); + assert_eq!(b256, new_b256) + } }