abin 0.1.6

A library for working with binaries and strings. The library tries to avoid heap-allocations / memory-copy whenever possible by automatically choosing a reasonable strategy: stack for small binaries; static-lifetime-binary or reference-counting.
Documentation
use crate::Boo;
use std::borrow::Borrow;
use std::cmp::Ordering;

impl<'a, TBorrowed, TOwned> Eq for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: Eq + PartialEq,
    TBorrowed: ?Sized,
{
}

impl<'a, TBorrowed, TOwned> PartialEq for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: PartialEq,
    TBorrowed: ?Sized,
{
    fn eq(&self, other: &Self) -> bool {
        self.borrow_internal() == other.borrow_internal()
    }
}

impl<'a, TBorrowed, TOwned> Ord for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: Ord + Eq + PartialOrd,
    TBorrowed: ?Sized,
{
    fn cmp(&self, other: &Self) -> Ordering {
        self.borrow_internal().cmp(other.borrow_internal())
    }
}

impl<'a, TBorrowed, TOwned> PartialOrd for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: PartialOrd + PartialEq,
    TBorrowed: ?Sized,
{
    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
        self.borrow_internal().partial_cmp(other.borrow_internal())
    }
}

impl<'a, TBorrowed, TOwned> PartialEq<TBorrowed> for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: PartialEq,
    TBorrowed: ?Sized,
{
    fn eq(&self, other: &TBorrowed) -> bool {
        self.borrow_internal() == other
    }
}

impl<'a, TBorrowed, TOwned> PartialOrd<TBorrowed> for Boo<'a, TBorrowed, TOwned>
where
    TOwned: Borrow<TBorrowed>,
    TBorrowed: PartialOrd + PartialEq,
    TBorrowed: ?Sized,
{
    fn partial_cmp(&self, other: &TBorrowed) -> Option<Ordering> {
        self.borrow_internal().partial_cmp(other)
    }
}