I believe there is a few memory management issues still. If I implemented accum / collect without any trickery like Java's impl, then it would leak memory. Other than that all the translated tests pass.
After I'm done implementing the c++ push pull reference implementation, I plan to redo the rust implementation in push pull. The exposed API will be the same, so no changes to your code if you experiment now.
One pain point is you'll be forced to redesign some of your data structors around shared memory (wrapping in
Rc<RefCell<...>> a lot). So that your sodium listener can modify the application state. I could not find a way to avoid this.
I'm also not aware of anyone who has actually used the Rust version. So it has not been heavily tested.