| trait MyFn<Arg> { | |
| type Output; | |
| fn call(&self, arg: Arg) -> Self::Output; | |
| } | |
| struct Wrap<F>(F); | |
| impl<A, B, F> MyFn<A> for Wrap<F> | |
| where | |
| F: Fn(A) -> B, | |
| { | |
| type Output = B; | |
| fn call(&self, arg: A) -> Self::Output { | |
| (self.0)(arg) | |
| } | |
| } | |
| struct A; | |
| fn test() -> impl for<'a> MyFn<&'a A, Output = impl Iterator + 'a> { | |
| //~^ ERROR `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` | |
| Wrap(|a| Some(a).into_iter()) | |
| } | |
| fn main() {} |