| // Regression test for #48132. This was failing due to problems around | |
| // the projection caching and dropck type enumeration. | |
| //@ run-pass | |
| #![allow(dead_code)] | |
| struct Inner<I, V> { | |
| iterator: I, | |
| item: V, | |
| } | |
| struct Outer<I: Iterator> { | |
| inner: Inner<I, I::Item>, | |
| } | |
| fn outer<I>(iterator: I) -> Outer<I> | |
| where I: Iterator, | |
| I::Item: Default, | |
| { | |
| Outer { | |
| inner: Inner { | |
| iterator: iterator, | |
| item: Default::default(), | |
| } | |
| } | |
| } | |
| fn main() { | |
| outer(std::iter::once(&1).cloned()); | |
| } |