Clojure has transients—a similar idea I believe. Basically bounded mutation.