hermes-encoding-components 0.1.0

Implementation of an IBC Relayer in Rust, as a library
Documentation
use cgp::core::error::{CanRaiseError, HasErrorType};

use crate::traits::convert::Converter;

pub struct TryConvertFrom;

impl<Encoding, From, To> Converter<Encoding, From, To> for TryConvertFrom
where
    Encoding: CanRaiseError<From::Error>,
    From: Clone + TryInto<To>,
{
    fn convert(_encoding: &Encoding, from: &From) -> Result<To, Encoding::Error> {
        from.clone().try_into().map_err(Encoding::raise_error)
    }
}

pub struct ConvertFrom;

impl<Encoding, From, To> Converter<Encoding, From, To> for ConvertFrom
where
    Encoding: HasErrorType,
    From: Clone + Into<To>,
{
    fn convert(_encoding: &Encoding, from: &From) -> Result<To, Encoding::Error> {
        Ok(from.clone().into())
    }
}