meilies 0.2.0

The RESP and MeiliES protocol types
Documentation
use std::convert::TryFrom;
use core::array::TryFromSliceError;
use crate::resp::{RespValue, FromResp, RespIntConvertError};

#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct EventNumber(pub u64);

impl EventNumber {
    pub const fn zero() -> EventNumber {
        EventNumber(0)
    }

    pub fn from_be_bytes(bytes: [u8; 8]) -> EventNumber {
        EventNumber(u64::from_be_bytes(bytes))
    }

    pub fn to_be_bytes(self) -> [u8; 8] {
        self.0.to_be_bytes()
    }

    pub const fn next(self) -> EventNumber {
        EventNumber(self.0 + 1)
    }
}

impl TryFrom<&[u8]> for EventNumber {
    type Error = TryFromSliceError;

    fn try_from(slice: &[u8]) -> Result<EventNumber, Self::Error> {
        TryFrom::try_from(slice).map(EventNumber::from_be_bytes)
    }
}

impl FromResp for EventNumber {
    type Error = RespIntConvertError;

    fn from_resp(value: RespValue) -> Result<Self, Self::Error> {
        i64::from_resp(value).map(|i| EventNumber(i as u64))
    }
}