feeless 0.1.11

A Nano (cryptocurrency) node and utilities such as nano addresses, hashing blocks, signing, etc.
Documentation
use crate::bytes::Bytes;
use crate::node::header::Header;
use crate::node::wire::Wire;
use crate::Public;
use std::convert::TryFrom;

#[derive(Debug)]
pub struct FrontierReq {
    start: Public,
    age: u32,
    count: u32,
}

impl FrontierReq {
    pub const LEN: usize = 40;
}

impl Wire for FrontierReq {
    fn serialize(&self) -> Vec<u8> {
        vec![]
    }

    fn deserialize(_: Option<&Header>, data: &[u8]) -> Result<Self, anyhow::Error>
    where
        Self: Sized,
    {
        let mut bytes = Bytes::new(data);
        let start =
            Public::try_from(bytes.slice(Public::LEN)?).expect("frontier req deserializing start");

        let mut s32 = [0u8; 4];
        s32.copy_from_slice(bytes.slice(4)?);
        let age = u32::from_le_bytes(s32);
        s32.copy_from_slice(bytes.slice(4)?);
        let count = u32::from_le_bytes(s32);

        Ok(Self { start, age, count })
    }

    fn len(_: Option<&Header>) -> Result<usize, anyhow::Error> {
        Ok(Self::LEN)
    }
}