問題タブ [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.

0 投票する
1 に答える
3897 参照

rust - RefCell を借りるにはどうすればよいですか、キーを見つけて、結果への参照を返しますか?

RefCell<HashMap>テーブルを借りて、キーを見つけ、結果への参照を返します。

(遊び場)

を削除するとRefCell、すべて正常に動作します。

ハッシュテーブルに文字列をコピーせずにルックアップ関数を書く正しい方法は何ですか?

0 投票する
1 に答える
1357 参照

reference - RefCell でのborrow_mutの違いと RefCell<&X>

私が正しく理解した場合、Rust でaを介して変更可能な借用を作成することはできません。 orを使用する必要があります。しかし、とにかく私はそれらを使用する方法を理解できません。たとえば、次の簡単な例を考えてみましょう。std::rc::RcCellRefCell

次のエラーが表示されます。

しかし、行から参照を削除した場合 (および のタイプを更新した場合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...

0 投票する
2 に答える
428 参照

rust - トラバーサルでの RefCell 借用の循環参照

私はRustを学んでいて、双方向リンクリストをコーディングしてみました。しかし、私はすでに典型的な反復トラバーサルの実装に行き詰まっています。ボロー チェッカー/ドロップ チェッカーが厳しすぎて、ボローが から関数の境界を越えたときに、ボローの正しい有効期間を推測できないという印象を受けていますRefCellcurr変数バインディング (この場合) を現在のコンテンツの借用に繰り返し設定する必要があります。

コンパイラは不平を言います:

NLLなし

NLLあり

この問題に対する反復的な解決策非再帰的)を本当に感謝します。