error[E0308]: mismatched types --> $DIR/issue-101984.rs:21:13 | LL | let (cmp, router) = self.router.at()?; | ^^^^^^^^^^^^^ ----------------- this expression has type `Match<&(for<'a> fn(&'a ()), Box)>` | | | expected `Match<&(for<'a> fn(&'a ()), ...)>`, found `(_, _)` | = note: expected struct `Match<&(for<'a> fn(&'a ()), Box)>` found tuple `(_, _)` error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.