問題タブ [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.
compiler-errors - コレクションの所有者を使用して、コレクション内にあるクロージャを呼び出します
次のコードを検討してください。
に渡そうとしているため、コンパイルされません:e
f
も不変として借りられる
e
ため、可変として借りることはできませんe.key_map
しかし、 の借用がe.key_map
終了すると、 にアクセスできなくなりますf
。では、マップ内にあるクロージャーを正確に呼び出すにはどうすればよいでしょうか?
rust - HashMap キーの寿命が短い
を使用しようとしてHashMap<String, &Trait>
いますが、理解できないエラー メッセージが表示されます。コードは次のとおりです(遊び場):
これが私が得ているエラーです:
ここで何が起こっているのですか?回避策はありますか?
rust - Rust: ssh2::Session ライフタイム エラー
更新:関連する質問は、問題が何であるかを理解するのに役立ちましたが、解決にはなりませんでした。
Sftp
オブジェクトをSession
同じ構造体に保存できずSftp
、必要に応じて生成することができないことを理解しました。新しいコードは次のとおりです。
少し異なるエラーを出力します。新しいエラーはsftp
、get_file
メソッド内の が十分に長く存続しないことです。File
では、a を返して呼び出し側で使用できるようにするにはどうすればよいでしょうか?
古い質問
次のコードは、Rust ライブラリssh2の SFTP 接続に必要なすべてのデータを含む構造体の作成を試みます。構造体は as として与えられSftpClient
、new
関数はそれを生成する必要があります。
このコードをコンパイルすると、rustc は長生きs
しないと文句を言います:
構造体と同じようにs
与えられているので、なぜ長生きしないのかわかりません。私の理解では、彼らは落とされるまで幸せな生活を送るべきです.SftpClient
Sftp
SftpClient
struct - 参照を構造体に格納する
Rust の gnuplot lib の周りにラッパー構造体を構築しようとしています。
同じ 2D 軸オブジェクトに複数の線のセットをプロットしたいので、Axes2D
周りを維持する必要があります。
この構造を修正するにはどうすればよいですか?およびフィールドはfigure
、構造体自体axes
と同じくらい存続します。plot
これは、次のコンパイラ エラーで失敗します。
'a
構造体、フィールド、および実装にライフタイムを追加しようとしましたが、これによりさまざまなエラーが発生します。自分が何をしているのかわからないので、誰かがこれを達成する方法を説明できるかどうか疑問に思っていました.
rust - アンラップ時に共有参照の背後にある値の外に移動できません
これは私が実行しようとしているコードです:
Rust の以前のバージョンでは、次のエラーが発生します。
そして、より現代的なバージョンでは:
ボローチェッカーの問題についてはすでに多くのドキュメントがあるようですが、それを読んでもまだ問題がわかりません。
なぜこれがエラーなのですか?どうすれば解決できますか?
rust - ボックスを保持できないのはなぜですか?
次のコードを考えてみましょう (遊び場で):
次のエラー メッセージが表示されます。
理由がわかりません。を呼び出すとis_even
、この関数に所有権が与えられますが、その関数の最後にis_even
は所有権が必要なくなります。main
これは不変 (読み取り専用) の所有権の譲渡であるため、保留時に削除されないことが確実ですinteger
-> 使用しても安全と思われます。
それでもこのエラーがあります。その理由と回避策は何ですか?
rust - Rust 借用チェッカーとの戦い
このコードは私には問題なく動作するように見えますが、錆の借用チェッカーはそれを好みません:
別の関数を使用することはできず、代わりに 2 つの for ループ部分を使用することはできなかったと思いますが、それは慣用的な Rust ではなく、適切なコーディング方法でもありません。実際、私はそれを試しましたが、移動した値を使用していることを示しているだけです。ここに私が得ているいくつかのエラーがあります:
vector - 同じメソッドでベクター内の要素を見つけてプッシュする
私の実装は面倒すぎると感じており、この単純なことを実装するためのより良い方法があると思います。
ゲーム ボードを表す構造体があり、Grid
グリッドにセルを追加するメソッドがあります。このメソッド ( add_cell
) は、セルを追加する前にグリッドにセルが既に存在するかどうかを確認します。
の可変/不変借用でのコンパイルエラーを回避するために、宣言の後に偽のスコープを配置しました。とにかく、このトリックは別のアプローチを使用することを避けることができると思います。is_not_yet_in
self.cells