// A derive repeats one field type node under several where-predicates, each with its own // `for<..>` binder (T::Shim Fn(&'s mut T::Shim<..>)> and the inner T::Shim<..>): // the lifetime uses are resolved per predicate. trait CallWithShim2: Sized { type Shim; } trait Trait<'s, 't, 'u> {} #[derive(Clone)] struct ShimMethod3( pub &'static dyn for<'s> Fn( &'s mut T::Shim Fn(&'s mut T::Shim Trait<'s, 't, 'u>>)>, ), ); #[test] fn compiles() {}