機能的なデータ構造(Haskell/Clojure/Scalaで使用されるHash Array Mapped Trieなど)は、基礎となるデータ構造で多くの共有に依存しています。たとえば、通常、データ構造を実装するツリー上のパスコピーによって実装されるマップ形式のデータ型にinsert
を実装するとします。Rustの借用ルールは、機能的なデータ構造の中に入りますか?
これらのデータ構造は、基本的な値の共有(およびプリンシパル所有者のない)に大きく依存していることを考えると、借用はそのような構造を実装する方法になりますか?
言い換えれば、この質問は広すぎたり、意見に基づいているようです。何か試してもうまくいきませんでしたか?あなたは「不安全」が提供する「エスケープハッチ」を認識していますか?どのような答えがここで有効でしょうか? [ハムレット](https://crates.io/crates/hamt/)がありますが、それは答えを提供しますか? – Shepmaster
[この質問](https://stackoverflow.com/questions/31227269/generic-types-ownership-and-persistent-data-structures?rq=1)への回答をご覧ください。 'Rc'は同じデータの複数の所有者を許し、' .clone() 'のように見えるかもしれないが、実際にはデータをコピーしない浅いコピーです。これは実際にはこれを可能にする不変性です。ハムレットボックスは 'Rc' [here](https://github.com/rainbowbismuth/hamt-rs/blob/master/src/lib.rs#L801)を使います。 –
共有不変所有権は、GCを明示的にすることによって一般に単純です。サイクリックデータは問題の部分です。 – Veedrac