rust/tests/ui/deriving/issue-89188-gat-hrtb.rs

38 lines
776 B
Rust
Raw Normal View History

// check-pass
trait CallWithShim: Sized {
type Shim<'s>
where
Self: 's;
}
#[derive(Clone)]
struct ShimMethod<T: CallWithShim + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::Shim<'s>));
2021-09-29 13:17:33 -05:00
trait CallWithShim2: Sized {
type Shim<T>;
}
struct S<'s>(&'s ());
#[derive(Clone)]
struct ShimMethod2<T: CallWithShim2 + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::Shim<S<'s>>));
2021-10-02 04:26:10 -05:00
trait Trait<'s, 't, 'u> {}
2021-09-29 13:17:33 -05:00
#[derive(Clone)]
struct ShimMethod3<T: CallWithShim2 + 'static>(
2021-10-02 04:26:10 -05:00
pub &'static dyn for<'s> Fn(
&'s mut T::Shim<dyn for<'t> Fn(&'s mut T::Shim<dyn for<'u> Trait<'s, 't, 'u>>)>,
),
2021-09-29 13:17:33 -05:00
);
trait Trait2 {
type As;
}
#[derive(Clone)]
struct ShimMethod4<T: Trait2 + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::As));
pub fn main() {}