#![feature(rustc_attrs)] trait Foo { fn foo(self); } #[rustc_on_unimplemented = "an impl did not match: {A} {B} {C}"] impl Foo for (A, B, C) { fn foo(self) {} } fn main() { Foo::::foo((1i32, 1i32, 1i32)); //~^ ERROR the trait bound `(i32, i32, i32): Foo` is not satisfied }