問題タブ [interior-mutability]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - RefCell を借りるにはどうすればよいですか、キーを見つけて、結果への参照を返しますか?
RefCell<HashMap>
テーブルを借りて、キーを見つけ、結果への参照を返します。
(遊び場)
を削除するとRefCell
、すべて正常に動作します。
ハッシュテーブルに文字列をコピーせずにルックアップ関数を書く正しい方法は何ですか?
reference - RefCell でのborrow_mutの違いと RefCell<&X>
私が正しく理解した場合、Rust でaを介して変更可能な借用を作成することはできません。 orを使用する必要があります。しかし、とにかく私はそれらを使用する方法を理解できません。たとえば、次の簡単な例を考えてみましょう。std::rc::Rc
Cell
RefCell
次のエラーが表示されます。
しかし、行から参照を削除した場合 (および のタイプを更新した場合mutx
):
すべて順調。RefMut::deref_mut() -> &mut T
しかし、 16 行目で呼び出された deference&&mut T
は最初のケースでは返され、2 番目のケースでは返されるはずなので、その理由がわかりません&mut T
。しかし、コンパイラは必要に応じて多くを適用する必要があるため ( deref 強制*
がどのように機能するかがわかれば)、 と の間に違いはないはずです。RefMut<X>::deref_mut()
RefMut<&X>::deref_mut()
編集mut
:リンクされた例が正しく書かれているので、間違って15行目に書くのを忘れました。だから今はlet mut mutx...
rust - トラバーサルでの RefCell 借用の循環参照
私はRustを学んでいて、双方向リンクリストをコーディングしてみました。しかし、私はすでに典型的な反復トラバーサルの実装に行き詰まっています。ボロー チェッカー/ドロップ チェッカーが厳しすぎて、ボローが から関数の境界を越えたときに、ボローの正しい有効期間を推測できないという印象を受けていますRefCell
。curr
変数バインディング (この場合) を現在のコンテンツの借用に繰り返し設定する必要があります。
コンパイラは不平を言います:
NLLなし
NLLあり
この問題に対する反復的な解決策(非再帰的)を本当に感謝します。