問題タブ [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.
rust - コマンドライン引数の合計中に「借用したコンテンツから移動できません」
これは私の最初の Rust プログラムであり、恐ろしい借用チェッカーに既に遭遇したようです。:)
プログラムは、コマンドラインで渡された引数を読み取り、それらを合計して結果を返す必要があります。引数を整数に解析するのに問題があります。
これは失敗します:
どのように進めればよいですか?
rust - 借用したコンテンツから一時的に移動する
変更可能な借用の値を置き換えようとしています。その一部を新しい値に移動します。
上記のコードは機能しません。当然のことながら、値を から移動すると、self
その整合性が損なわれます。しかし、その値はその後すぐに削除されるため、(コンパイラではないにしても) その安全性を保証できます。
これを達成する方法はありますか?これは安全でないコードの仕事のように感じますが、それがどのように機能するかはわかりません。
rust - as_mut().unwrap(): 要件が競合しているため、有効期間を推測できません
さびた生涯はまた私を混乱させます。所有しているボックス化されたオブジェクトへの変更可能な参照を返そうとしています。これが私の問題を単純化したものです:
これらのエラーが表示されますが、よくわかりません。
これを解決する方法がわかりません。
hashmap - struct impl 内の &mut として hashmap フィールド値にアクセスする
次のような単純な構造体が与えられます。
Client
としてアクセスする最良の方法は何&mut
ですか? 次のコードを検討してください。
私が見る唯一の 2 つのオプションは、Client 内部でRefCell
/を使用することです。Cell
または、 をラップするclients
とRefCell
、 に対して次のような単純なメソッドを作成できなくなりますServer
。
クロージャーの使用を強制します(例with_client_by_token(|c| ...)
)。
rust - Cの可変長配列コードをRustに変換するには?
Rust が可変長配列をサポートしていないことは知っていますが、次のことを考えると、それらを何に置き換えるか疑問に思います。
- ループ内で小さな Vec を割り当てたり割り当て解除したりしたくありません
- 借用チェッカーでコードをループ外に移動できません
- 固定サイズの配列には多くの制限があるため、それらの使用方法がわかりません
私が変換している C コードは、各行でコールバックを呼び出して画像を処理し、ポインターの小さな配列を渡します。
私のRustの試み(遊び場の例):
しかし、それは拒否されました:
型のコレクションは、型の
[&mut [f32]]
要素に対するイテレータから構築できません&mut [f32]
悲しいことに、それは私がやろうとしていたこととまったく同じように聞こえます!
固定サイズの配列を使用してみましたが、Rust はそれらのジェネリックをサポートしていないため、イテレーターからそれを取り込むことはできず、C のようなループでそれらを取り込むこともできません。ループはそれよりも長生きしません。
タイプの特性
core::iter::FromIterator<&mut [f32]>
が実装されていません[&mut [f32]; 4]
固定サイズの配列からメモリのスライスを取得する別のアプローチも失敗します。
エラー:
img.chan
一度に複数回ミュータブルとして借用することはできません
rust - 列挙型のオプションで一致する場合、借用したコンテンツから移動できません
私はRustに非常に慣れていないので、理解できないことを教えてください。構造体への参照で一致させようとしています。op
typeのフィールドOption<Operator>
がOperator
あり、 は定義された列挙型です。これはコードです:
しかし、次のエラーが表示されますが、これはある程度理解できますが、そうではありません。
一致するように、そのようなことを「適切に」実装するにはどうすればよいですか?