28 lines
384 B
Rust
28 lines
384 B
Rust
|
// check-pass
|
||
|
|
||
|
pub struct Struct {}
|
||
|
|
||
|
pub trait Trait<'a> {
|
||
|
type Assoc;
|
||
|
|
||
|
fn method() -> Self::Assoc;
|
||
|
}
|
||
|
|
||
|
impl<'a> Trait<'a> for Struct {
|
||
|
type Assoc = ();
|
||
|
|
||
|
fn method() -> Self::Assoc {}
|
||
|
}
|
||
|
|
||
|
pub fn function<F, T>(f: F)
|
||
|
where
|
||
|
F: for<'a> FnOnce(<T as Trait<'a>>::Assoc),
|
||
|
T: for<'b> Trait<'b>,
|
||
|
{
|
||
|
f(T::method());
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
function::<_, Struct>(|_| {});
|
||
|
}
|