macro_rules! assert_type_eq_all { ($x:ty, $($xs:ty),+ $(,)*) => { ... }; }
Expand description
Asserts that all types in a list are equal to each other.
§Examples
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:
ⓘ
assert_type_eq_all!(String, str);
This should also work the other way around, regardless of Deref
implementations.
ⓘ
assert_type_eq_all!(str, String);