Currently, our rust HAMT and AMT implementations eagerly decode. Unfortunately:
This means we need to eagerly decode everything (and re-encode on save).
This causes what appears to be a significant amount of code bloat as HAMT and AMT internals now need to be monomorphized on a per-value-type basis. If we instead decoded into some form of "deferred" object (as we currently do in go), the core HAMT & AMT code could be value (and even key) agnostic.
@Stebalien P3 + Phase 1 basically means it's not going to happen. We are moving this to Phase 2 and can bump the priority. Please shout if you wanna oppose!
Currently, our rust HAMT and AMT implementations eagerly decode. Unfortunately: