[][src]Macro static_assertions::assert_type_eq_all

macro_rules! assert_type_eq_all {
    ($x:ty, $($xs:ty),+ $(,)*) => { ... };

Asserts that all types in a list are equal to each other.


Often times, type aliases are used to express usage semantics via naming. In some cases, the underlying type may differ based on platform. However, other types like c_float will always alias the same type.

use std::os::raw::c_float;

assert_type_eq_all!(c_float, f32);

This macro can also be used to compare types that involve lifetimes! Just use 'static in that case:

type Buf<'a> = &'a [u8];

assert_type_eq_all!(Buf<'static>, &'static [u8]);

The following example fails to compile because String and str do not refer to the same type:

This example deliberately fails to compile
assert_type_eq_all!(String, str);

This should also work the other way around, regardless of Deref implementations.

This example deliberately fails to compile
assert_type_eq_all!(str, String);