rearrange 0.2.0

Alternative API for sorting by multiple properties
Documentation
use crate::Order;

pub trait Rearrange<T> {
    fn rearrange<F>(self, f: F)
    where
        F: for<'x> FnMut(Order<'x, T>) -> Order<'x, T>;
}

impl<T> Rearrange<T> for &mut [T] {
    fn rearrange<F>(self, mut f: F)
    where
        F: for<'x> FnMut(Order<'x, T>) -> Order<'x, T>,
    {
        self.sort_by(|a, b| {
            let order = Order::new(a, b);
            let order = f(order);

            order.ordering()
        });
    }
}