title: Do Rust's borrowing rules get in the way of functional data structures?
body: <p>Functional data structures (such as the Hash Array Mapped Trie used in Haskell/Clojure/Scala) rely on lots of sharing in the underlying data structure. For example, if we implement <code>insert</code> on a map-like data type that's usually implemented by path-copying on the tree that implements the data structure.</p>
  
  <p>Given that these data structures rely a lot on sharing (and no principal owner of) underlying values, will borrowing get in the way of implementing such structures?</p>