jonhoo / flurry

A port of Java's ConcurrentHashMap to Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implement Drain and IntoIterator

jonhoo opened this issue · 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.

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?

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