pub trait Compare<Right> {
type Output;
}
pub type CompareOut<Left, Right> = <Left as Compare<Right>>::Output;
pub struct TLess;
pub struct TEqual;
pub struct TGreater;
pub trait ReverseOrdering_ {
type Output;
}
pub type ReverseOrdering<This> = <This as ReverseOrdering_>::Output;
impl ReverseOrdering_ for TLess {
type Output = TGreater;
}
impl ReverseOrdering_ for TEqual {
type Output = TEqual;
}
impl ReverseOrdering_ for TGreater {
type Output = TLess;
}
#[cfg(test)]
mod tests {
use super::{ReverseOrdering, TEqual, TGreater, TLess};
use core_extensions::type_asserts::AssertEq;
#[test]
fn reverse() {
let _: AssertEq<ReverseOrdering<TLess>, TGreater>;
let _: AssertEq<ReverseOrdering<TEqual>, TEqual>;
let _: AssertEq<ReverseOrdering<TGreater>, TLess>;
}
}