This is a Rust implementation of the dirstatemap class.
The Python implementation uses propertycache for lazy initialization, some of
which have side effects, all for performance reasons. While meant for
encapsulation, callers from different parts of the code break said
encapsulation. Lastly, most of its inner datastructures are used as iterators
from the rest of the code base.
All of the above proved to be a real challenge and the reason why this is an
RFC patch. While the code works (read: the tests pass), it is slower and
harder to maintain than it should be.
I will direct your attention to two files to start:
- rust/hg-cpython/src/dirstate/dirstate_map.rs
- rust/hg-cpython/src/dirstate/macros.rs
These files contain documentation and TODO information that contextualize the
related code. I hope there is enough information to help you get an idea of
the issue.
Can you just #[derive(Default)]?