rust/tests/ui/trait-bounds/issue-95640.rs

32 lines
403 B
Rust

//@ build-pass
//@ compile-flags:-Zmir-opt-level=3
struct D;
trait Tr {
type It;
fn foo(self) -> Option<Self::It>;
}
impl<'a> Tr for &'a D {
type It = ();
fn foo(self) -> Option<()> {
None
}
}
fn run<F>(f: F)
where
for<'a> &'a D: Tr,
F: Fn(<&D as Tr>::It),
{
let d = &D;
while let Some(i) = d.foo() {
f(i);
}
}
fn main() {
run(|_| {});
}