blob: 35346199add927b76d35cd2087e245942db0d7ba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// check-pass
fn any<T>() -> T {
loop {}
}
trait Foo {
type V;
}
trait Callback<T: Foo>: Fn(&T, &T::V) {}
impl<T: Foo, F: Fn(&T, &T::V)> Callback<T> for F {}
struct Bar<T: Foo> {
callback: Box<dyn Callback<T>>,
}
impl<T: Foo> Bar<T> {
fn event(&self) {
(self.callback)(any(), any());
}
}
struct A;
struct B;
impl Foo for A {
type V = B;
}
fn main() {
let foo = Bar::<A> { callback: Box::new(|_: &A, _: &B| ()) };
foo.event();
}
|