Yes, it's required because there is a `range` in scope.
I think there's a lifetime inference issue with iterators that I was working around here (with the explicit return type), but I never did come up with an isolated test case for it.