pub trait Same<Rhs = Self> {
    type Output;
Expand description

A type operator that ensures that Rhs is the same as Self, it is mainly useful for writing macros that can take arbitrary binary or unary operators.

Same is implemented generically for all types; it should never need to be implemented for anything else.

Note that Rust lazily evaluates types, so this will only fail for two different types if the Output is used.


use typenum::{Same, Unsigned, U4, U5};

assert_eq!(<U5 as Same<U5>>::Output::to_u32(), 5);

// Only an error if we use it:
type Undefined = <U5 as Same<U4>>::Output;
// Compiler error:
// Undefined::to_u32();

Associated Types

Should always be Self