Ok. All the needless `Repeat`s have been removed. The ones in `HashSet::difference` and `HashSet::intersection` are necessary, unfortunately. The closure needs a static lifetime since it's used for a returned iterator.