//@ check-pass | |
//@ compile-flags: -Znext-solver | |
// See https://github.com/rust-lang/trait-system-refactor-initiative/issues/1, | |
// a minimization of a pattern in core. | |
trait Iterator { | |
type Item; | |
} | |
struct Flatten<I>(I); | |
impl<I, U> Iterator for Flatten<I> | |
where | |
I: Iterator<Item = U>, | |
{ | |
type Item = U; | |
} | |
fn needs_iterator<I: Iterator>() {} | |
fn environment<J>() | |
where | |
J: Iterator, | |
{ | |
needs_iterator::<Flatten<J>>(); | |
} | |
fn main() {} |