Have `retain` return a iterator over the extracted values, similar to `Drain` in the standard library, or my [PreRFC](https://internals.rust-lang.org/t/pre-rfc-retain-iterators-api-for-hashset-hashmap-vec-vecdeque/4164/4). It seems like a relatively simple change, so if you're interested I could probably get it done and shoot you a PR later this week.