add versionize support for more data structures
add versionize support for VecDeque/HashMap/HashSet.
Signed-off-by: Zizheng Bian [email protected]
Reason for This PR
Added support for some of the commonly used data structures: VecDeque, HashMap, and HashSet
Description of Changes
- Add versionize support for new types in primitives.rs.
- Add Error arms for new types in lib.rs.
License Acceptance
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
PR Checklist
[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]
- [x] All commits in this PR are signed (
git commit -s). - [x] The reason for this PR is clearly provided (issue no. or explanation).
- [x] The description of changes is clear and encompassing.
- [x] Any required documentation changes (code and docs) are included in this PR.
- [x] Any newly added
unsafecode is properly documented. - [x] Any user-facing changes are mentioned in
CHANGELOG.md.
Hi @sandreim @berciuliviu @jiangliu This is the continue work of #25
Hi @roypat @luminitavoicu @aghecenco Could you please take a look at this PR :)
Hi, Sorry for the late response, we've all been pretty busy with a release the last few weeks. This look good to me, and I think @andreeaflorescu's concern regarding VecDequeue/Vec compatibility is addressed by Vec and VecDequeue having the same serialized format (e.g. the serializer "forgets" about the ring buffer structure of VecDequeue and just lays out the queue sequentially - which I think is what should happen, anyway).
Just a few instances where you forgot to replace
Twith$GenericParamwhen converting the Vec impl into a macro, can you fix those and rebase?
Thanks, I fixed these problems.
But I think the CI envirnoment may broken @roypat :

oh my, thanks for letting me know, I'll have a look later today!
fixed the CI, it seems that after rebasing some of your tests started failing (when you wrote this PR, the project was using rust 1.54, we've since updated to having the CI run in 1.64, and some Display impls in the standard library changed along the way)
Thank you, and I have fixed the error code in test cases, but the CI still failed due to timeout, how can I trigger CI's retry logic? @roypat
Ugh, I think that might be related to https://github.com/rust-vmm/community/issues/137
I increased the timeouts (I think? The tests all passed in under 5 minutes this time), so it seems the only thing left to address is the coverage. I had a look at the report and it seems the only thing uncovered are .map_err lines, so in my book just adjusting the target value here is enough
Hi @andreeaflorescu @luminitavoicu @aghecenco Could you please look at this PR :)
Hi @roypat , could you help me to find others who have permission to merge review this pr?