use std::fmt::Debug; macro_rules! i { ($($tr:tt)*) => { impl $($tr)* }; } fn foo(x: i!(Debug), y: i!(Debug)) -> String { let mut a = x; a = y; //~ ERROR mismatched format!("{:?}", a) } trait S {} fn much_universe, U: IntoIterator)>>( _: i!(Debug + Clone), ) { } fn main() {}