]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait/issues/issue-65581.rs
Merge commit '266e96785ab71834b917bf474f130a6d8fdecd4b' into sync_cg_clif-2022-10-23
[rust.git] / src / test / ui / impl-trait / issues / issue-65581.rs
1 // check-pass
2 // ignore-compare-mode-chalk
3
4 #![allow(dead_code)]
5
6 trait Trait1<T, U> {
7     fn f1(self) -> U;
8 }
9
10 trait Trait2 {
11     type T;
12     type U: Trait2<T = Self::T>;
13     fn f2(f: impl FnOnce(&Self::U));
14 }
15
16 fn f3<T: Trait2>() -> impl Trait1<T, T::T> {
17     Struct1
18 }
19
20 struct Struct1;
21
22 impl<T: Trait2> Trait1<T, T::T> for Struct1 {
23     fn f1(self) -> T::T {
24         unimplemented!()
25     }
26 }
27
28 fn f4<T: Trait2>() {
29     T::f2(|_| {
30         f3::<T::U>().f1();
31     });
32 }
33
34 fn main() {}