evm_rpc_types 3.1.0

Candid types for interacting with the EVM RPC canister
Documentation
use crate::{Hex, Hex20, Hex256, Hex32, Nat256, RpcError};
use alloy_primitives::ruint::{ToUintError, UintTryFrom};

impl From<Hex20> for alloy_primitives::Address {
    fn from(value: Hex20) -> Self {
        Self::from(<[u8; 20]>::from(value))
    }
}

impl From<alloy_primitives::Address> for Hex20 {
    fn from(value: alloy_primitives::Address) -> Self {
        Self::from(value.into_array())
    }
}

impl From<Hex32> for alloy_primitives::B256 {
    fn from(value: Hex32) -> Self {
        Self::from(<[u8; 32]>::from(value))
    }
}

impl From<alloy_primitives::B256> for Hex32 {
    fn from(value: alloy_primitives::B256) -> Self {
        Self::from(value.0)
    }
}

impl<const N: usize> From<alloy_primitives::FixedBytes<N>> for Hex {
    fn from(value: alloy_primitives::FixedBytes<N>) -> Self {
        Self::from(value.to_vec())
    }
}

impl From<Hex> for alloy_primitives::Bytes {
    fn from(value: Hex) -> Self {
        Self::from_iter(Vec::<u8>::from(value))
    }
}

impl From<alloy_primitives::Bytes> for Hex {
    fn from(value: alloy_primitives::Bytes) -> Self {
        Hex(value.to_vec())
    }
}

impl From<alloy_primitives::U256> for Nat256 {
    fn from(value: alloy_primitives::U256) -> Self {
        Nat256::from_be_bytes(value.to_be_bytes())
    }
}

impl UintTryFrom<Nat256> for alloy_primitives::U256 {
    fn uint_try_from(value: Nat256) -> Result<Self, ToUintError<Self>> {
        Ok(alloy_primitives::U256::from_be_bytes(value.into_be_bytes()))
    }
}

impl From<Hex256> for alloy_primitives::Bloom {
    fn from(value: Hex256) -> Self {
        alloy_primitives::Bloom::from(value.0)
    }
}

impl From<alloy_primitives::Bloom> for Hex256 {
    fn from(value: alloy_primitives::Bloom) -> Self {
        Hex256::from(value.into_array())
    }
}

impl TryFrom<Nat256> for alloy_primitives::B64 {
    type Error = RpcError;

    fn try_from(value: Nat256) -> Result<Self, Self::Error> {
        Ok(alloy_primitives::B64::from(u64::try_from(value)?))
    }
}

impl From<alloy_primitives::B64> for Nat256 {
    fn from(value: alloy_primitives::B64) -> Self {
        Nat256::from(u64::from(value))
    }
}