flurry icon indicating copy to clipboard operation
flurry copied to clipboard

Implement Drain and IntoIterator

Open jonhoo opened this issue 5 years ago • 2 comments

We should implement the Drain and IntoIterator traits on HashMap!

Part of what is tricky about Drain is the contract for what happens when the user "does something weird". For example, what happens if I write the following code:

std::mem::forget(map.drain());

Is map now empty or full? What happens if I read one element and then drop the Drain? Take a look at hashbrown::RawDrain for some inspiration. I'm genuinely not sure what the best way to express this is a concurrent map.

@soruh began an implementation in #33, but it has since run out of time to work on it. It may still be useful to draw inspiration from though, and has a fair amount of good discussion around the challenges involved.

jonhoo avatar Feb 17 '20 22:02 jonhoo

Hi Jon, I would like to give it a try, though this will be challenging. But I found solving specific problems is a good way, if not the best, to strengthen your coding skills. I used flurry in a small actix project and I noted that there is no serde implementation and also no merge. Should I open separate issues for this?

jmfrank63 avatar Oct 15 '21 11:10 jmfrank63

Definitely give it a try if you have the time! Serialization support should have landed in #79 — what in particular are you missing?

jonhoo avatar Oct 17 '21 23:10 jonhoo