問題タブ [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.
pointers - 所有変数が不変の場合、デストラクタ呼び出し `fn drop(&mut self)` 呼び出しはどのように挿入されますか?
Drop
型が実装されている変数がスコープ外になると、関数への呼び出しfn drop(&mut self)
が挿入され、スコープ外になる変数への新しく作成された変更可能な参照が渡されることを理解しています。
しかし、変数が不変にバインドされていて、それを可変的に借用することが違法である場合、どのようにそれが可能でしょうか? これが私が話していることの例です:
これにより、次のエラーが生成されます:不変のローカル変数を期待どおりに可変として借りることはできませx
ん。
変更可能な参照が想定されているx
ため、 がドロップされる場合は、同様のことが発生する必要があります。drop
rust - 型の不一致エラーにより、テキストファイル解析関数がコンパイルに失敗する
次のようにレイアウトされた、1 行に 1 つの 3 単語のエントリを含む単純な構成テキスト ファイルを解析しようとしています。
ここで(およびRust Playpen で)解析(およびその後のコンパイルエラー)を行う関数を再現しました:
本質的にmatch
、空のタプルを期待するステートメントを作成したようであり、 a の内容が!Vec<&str>
でラップされていることもわかります。Option
注意。この投稿にはもともと 2 つの質問が含まれていました (1 つのエラーが別の方法で現れると私は信じていました) が、コメントのアドバイスに従って、2 つの個別の投稿に分割しました。後者の投稿はこちら.
rust - 有効期間/借用エラーが原因で、テキストファイル解析関数がコンパイルに失敗する
注意。この投稿はもともと、2 つの質問 (1 つのエラーが別の形で現れると私は信じていた) を含む大きな投稿の一部でしたが、サイトのガイドラインに準拠するために、2 つの個別の投稿に分割しました。最初の投稿はこちら.
次のようにレイアウトされた、1 行に 1 つの 3 単語のエントリを含む単純な構成テキスト ファイルを解析しようとしています。
ここ(およびRustプレイグラウンド)で解析(およびその後のコンパイルエラー)を行う関数を再現しました:
要するに、借用チェッカーに問題があります。私のコードでは、をword_vector
指していない所有オブジェクトが取り込まれていませんline_slice
か? おそらくunwrap()
またはcollect()
参照を返し、範囲外になるのは参照であると考えましたが、アンラップと収集のRust Docsはそうではないと示唆しています。
rust - 不変のローカル変数を可変として借用できないため、変数を再借用できません
私はRustが初めてで、借用チェッカーに問題があります。
consume_byte
からの呼び出しはmain
問題なく機能します。しかし、間に別の関数 ( consume_two_bytes
) を追加しようとすると、すべてがバラバラになります。
reader
次のコードは、変数 in が可変でconsume_two_bytes
はなく、借用できないように見えるため、コンパイルされません。
関数シグネチャにa を追加する&mut
と、コンパイラ エラーが変更されるだけです。
rust - HashMapから変更可能な構造体を取得するには?
すべての州のハッシュマップがあります。これは でありHashMap<String, Rc<State>>
、現在の州のメンバーを呼び出したいと考えていますfn init(&mut self)
。しかし、次のコードでエラーが発生します。
エラーは次のとおりです。
ドキュメントからわかるように、問題はget_mut
、可変状態への参照ではなく、状態への可変参照を返すことです。では、可変状態への参照を取得するにはどうすればよいでしょうか。
rust - そのようなプロジェクトで借用と可変性地獄を解決するにはどうすればよいですか?
考え方は単純です。いくつかの Windows を持つアプリがいくつかあります。Windows には、アプリへの何らかのタイプの参照があります。彼らはお互いの方法を使用する必要があります。大雑把なコードをいくつか作成しましたが、1 つの問題を解決すると、新しい問題が発生します。
rust - &self move フィールドを含むボックス - 借用したコンテンツから移動
他の構造体 (私が定義していない) への参照を含むフィールドを持つ構造体があります。
そしてHtmlHandlebars
、機能を実装する必要があります
そして、その関数では、Box
を別の関数に移動する必要があります。このようなもの:
しかし、私はちょっと立ち往生しています:
- 借用しているため、Box 参照を移動できません
self
- その構造体はコピーを実装していないため、ボックス参照をコピーできません
- 他の問題を引き起こすため、
&self
変更できません...&mut self
多分私はそれを完全に間違っています..他にできることはありますか?私のオプションは何ですか?
コードのより完全な概要が必要な場合は、ここで見つけることができます
PS:タイトルで状況を説明する方法がわかりませんでした。自由に変更してください。