1
2
3
4
5
6
7
8
9
10
11
pub trait OrdBy {
    type Target: Ord + Clone;
    fn ord_by(&self) -> &Self::Target;
}

impl<T: Ord + Clone> OrdBy for T {
    type Target = T;
    fn ord_by(&self) -> &Self::Target {
        self
    }
}