//@ check-pass | |
trait Factory { | |
type Product; | |
} | |
impl Factory for () { | |
type Product = (); | |
} | |
trait ProductConsumer<P> { | |
fn consume(self, product: P); | |
} | |
impl<P> ProductConsumer<P> for () { | |
fn consume(self, _: P) {} | |
} | |
fn make_product_consumer<F: Factory>(_: F) -> impl ProductConsumer<F::Product> { | |
() | |
} | |
fn main() { | |
let consumer = make_product_consumer(()); | |
consumer.consume(()); | |
} |