Yet another new rust thing for me is keeping track of when a function is handing me an iterator as opposed to a list directly.
I think it reveals how often in other languages i'd tend to pass around a full list or use list comprehensions that end up allocating a whole new list for the temporary computation.
It'll be a good exercise to see how often I can do work on the iterator alone before .collect()ing it. At least it's obvious when you're being lazy with rust!