問題タブ [borrow-checker]

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 に答える
2267 参照

rust - コマンドライン引数の合計中に「借用したコンテンツから移動できません」

これは私の最初の Rust プログラムであり、恐ろしい借用チェッカーに既に遭遇したようです。:)

プログラムは、コマンドラインで渡された引数を読み取り、それらを合計して結果を返す必要があります。引数を整数に解析するのに問題があります。

これは失敗します:

どのように進めればよいですか?

0 投票する
3 に答える
2146 参照

rust - 借用したコンテンツから一時的に移動する

変更可能な借用の値を置き換えようとしています。その一部を新しい値に移動します。

上記のコードは機能しません。当然のことながら、値を から移動すると、selfその整合性が損なわれます。しかし、その値はその後すぐに削除されるため、(コンパイラではないにしても) その安全性を保証できます。

これを達成する方法はありますか?これは安全でないコードの仕事のように感じますが、それがどのように機能するかはわかりません。

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

rust - as_mut().unwrap(): 要件が競合しているため、有効期間を推測できません

さびた生涯はまた私を混乱させます。所有しているボックス化されたオブジェクトへの変更可能な参照を返そうとしています。これが私の問題を単純化したものです:

これらのエラーが表示されますが、よくわかりません。

これを解決する方法がわかりません。

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

hashmap - struct impl 内の &mut として hashmap フィールド値にアクセスする

次のような単純な構造体が与えられます。

Clientとしてアクセスする最良の方法は何&mutですか? 次のコードを検討してください。

私が見る唯一の 2 つのオプションは、Client 内部でRefCell/を使用することです。Cell

または、 をラップするclientsRefCell、 に対して次のような単純なメソッドを作成できなくなりますServer

クロージャーの使用を強制します(例with_client_by_token(|c| ...))。

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

rust - Cの可変長配列コードをRustに変換するには?

Rust が可変長配列をサポートしていないことは知っていますが、次のことを考えると、それらを何に置き換えるか疑問に思います。

  • ループ内で小さな Vec を割り当てたり割り当て解除したりしたくありません
  • 借用チェッカーでコードをループ外に移動できません
  • 固定サイズの配列には多くの制限があるため、それらの使用方法がわかりません

私が変換している C コードは、各行でコールバックを呼び出して画像を処理し、ポインターの小さな配列を渡します。

私のRustの試み(遊び場の例):

しかし、それは拒否されました:

型のコレクションは、型の[&mut [f32]]要素に対するイテレータから構築できません&mut [f32]

悲しいことに、それは私がやろうとしていたこととまったく同じように聞こえます!

固定サイズの配列を使用してみましたが、Rust はそれらのジェネリックをサポートしていないため、イテレーターからそれを取り込むことはできず、C のようなループでそれらを取り込むこともできません。ループはそれよりも長生きしません。

タイプの特性core::iter::FromIterator<&mut [f32]>が実装されていません[&mut [f32]; 4]


固定サイズの配列からメモリのスライスを取得する別のアプローチも失敗します。

エラー:img.chan一度に複数回ミュータブルとして借用することはできません

0 投票する
0 に答える
43 参照

rust - 列挙型のオプションで一致する場合、借用したコンテンツから移動できません

私はRustに非常に慣れていないので、理解できないことを教えてください。構造体への参照で一致させようとしています。optypeのフィールドOption<Operator>Operatorあり、 は定義された列挙型です。これはコードです:

しかし、次のエラーが表示されますが、これはある程度理解できますが、そうではありません。

一致するように、そのようなことを「適切に」実装するにはどうすればよいですか?