aligners 0.0.10

Utilities for alignment guarantees for data.
Documentation
use crate::alignment::Alignment;
use crate::slice::AlignedSlice;

impl<A: Alignment> PartialEq for AlignedSlice<A> {
    #[inline]
    fn eq(&self, other: &Self) -> bool {
        let other_slice: &[u8] = other;
        self.eq(other_slice)
    }
}

impl<A: Alignment> Eq for AlignedSlice<A> {}

impl<A: Alignment> PartialEq<&AlignedSlice<A>> for Vec<u8> {
    #[inline]
    fn eq(&self, other: &&AlignedSlice<A>) -> bool {
        let slice: &[u8] = self;
        let other_slice: &[u8] = other;
        slice.eq(other_slice)
    }
}

impl<A: Alignment> PartialEq<Vec<u8>> for &AlignedSlice<A> {
    #[inline]
    fn eq(&self, other: &Vec<u8>) -> bool {
        other.eq(self)
    }
}

impl<A: Alignment> PartialEq<[u8]> for AlignedSlice<A> {
    #[inline]
    fn eq(&self, other: &[u8]) -> bool {
        let slice: &[u8] = self;
        slice.eq(other)
    }
}

impl<A: Alignment> PartialEq<AlignedSlice<A>> for [u8] {
    #[inline]
    fn eq(&self, other: &AlignedSlice<A>) -> bool {
        other.eq(self)
    }
}

impl<A: Alignment, const N: usize> PartialEq<[u8; N]> for AlignedSlice<A> {
    #[inline]
    fn eq(&self, other: &[u8; N]) -> bool {
        let slice: &[u8] = self;
        slice.eq(other)
    }
}

impl<A: Alignment, const N: usize> PartialEq<AlignedSlice<A>> for [u8; N] {
    #[inline]
    fn eq(&self, other: &AlignedSlice<A>) -> bool {
        other.eq(self)
    }
}

impl<A: Alignment> PartialOrd for AlignedSlice<A> {
    #[inline]
    fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
        let slice: &[u8] = self;
        let other_slice: &[u8] = other;

        slice.partial_cmp(other_slice)
    }
}

impl<A: Alignment> Ord for AlignedSlice<A> {
    #[inline]
    fn cmp(&self, other: &Self) -> std::cmp::Ordering {
        let slice: &[u8] = self;
        let other_slice: &[u8] = other;

        slice.cmp(other_slice)
    }
}