//@ known-bug: #117696 fn main() { let mut it = (Empty); rec(&mut it); } struct Empty; impl Iterator for Empty { type Item = (); fn next<'a>(&'a mut self) -> core::option::Option<()> { None } } fn identity(x: T) -> T { x } fn rec(mut it: T) where T: Iterator, { if () == () { T::count(it); } else { rec(identity(&mut it)) } }