1 error[E0631]: type mismatch in function arguments
2 --> $DIR/issue-88382.rs:26:40
4 LL | do_something(SomeImplementation(), test);
5 | ------------ ^^^^ expected due to this
7 | required by a bound introduced by this call
9 LL | fn test<'a, I: Iterable>(_: &mut I::Iterator<'a>) {}
10 | ------------------------------------------------- found signature defined here
12 = note: expected function signature `for<'a> fn(&'a mut std::iter::Empty<usize>) -> _`
13 found function signature `for<'a, 'b> fn(&'b mut <_ as Iterable>::Iterator<'a>) -> _`
14 note: required by a bound in `do_something`
15 --> $DIR/issue-88382.rs:20:48
17 LL | fn do_something<I: Iterable>(i: I, mut f: impl for<'a> Fn(&mut I::Iterator<'a>)) {
18 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `do_something`
20 error: aborting due to previous error
22 For more information about this error, try `rustc --explain E0631`.