[−][src]Macro static_assertions::assert_impl_one
macro_rules! assert_impl_one { ($x:ty: $($t:path),+ $(,)?) => { ... }; }
Asserts that the type implements exactly one in a set of traits.
Related:
Examples
Given some type Foo, it is expected to implement either Snap, Crackle,
or Pop:
ⓘThis example deliberately fails to compile
struct Foo; trait Snap {} trait Crackle {} trait Pop {} assert_impl_one!(Foo: Snap, Crackle, Pop);
If only Crackle is implemented, the assertion passes:
impl Crackle for Foo {} assert_impl_one!(Foo: Snap, Crackle, Pop);
If Snap or Pop is also implemented, the assertion fails:
ⓘThis example deliberately fails to compile
impl Pop for Foo {} assert_impl_one!(Foo: Snap, Crackle, Pop);