問題タブ [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 投票する
2 に答える
50 参照

compiler-errors - コレクションの所有者を使用して、コレクション内にあるクロージャを呼び出します

次のコードを検討してください。

に渡そうとしているため、コンパイルされません:ef

も不変として借りられるeため、可変として借りることはできませんe.key_map

しかし、 の借用がe.key_map終了すると、 にアクセスできなくなりますf。では、マップ内にあるクロージャーを正確に呼び出すにはどうすればよいでしょうか?

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

rust - HashMap キーの寿命が短い

を使用しようとしてHashMap<String, &Trait>いますが、理解できないエラー メッセージが表示されます。コードは次のとおりです(遊び場):

これが私が得ているエラーです:

ここで何が起こっているのですか?回避策はありますか?

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

rust - Rust: ssh2::Session ライフタイム エラー

更新:関連する質問は、問題が何であるかを理解するのに役立ちましたが、解決にはなりませんでした。

SftpオブジェクトをSession同じ構造体に保存できずSftp、必要に応じて生成することができないことを理解しました。新しいコードは次のとおりです。

少し異なるエラーを出力します。新しいエラーはsftpget_fileメソッド内の が十分に長く存続しないことです。Fileでは、a を返して呼び出し側で使用できるようにするにはどうすればよいでしょうか?

古い質問

次のコードは、Rust ライブラリssh2の SFTP 接続に必要なすべてのデータを含む構造体の作成を試みます。構造体は as として与えられSftpClientnew関数はそれを生成する必要があります。

このコードをコンパイルすると、rustc は長生きsしないと文句を言います:

構造体と同じようにs与えられているので、なぜ長生きしないのかわかりません。私の理解では、彼らは落とされるまで幸せな生活を送るべきです.SftpClientSftpSftpClient

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

struct - 参照を構造体に格納する

Rust の gnuplot lib の周りにラッパー構造体を構築しようとしています。

同じ 2D 軸オブジェクトに複数の線のセットをプロットしたいので、Axes2D周りを維持する必要があります。

この構造を修正するにはどうすればよいですか?およびフィールドはfigure、構造体自体axesと同じくらい存続します。plot

これは、次のコンパイラ エラーで失敗します。

'a構造体、フィールド、および実装にライフタイムを追加しようとしましたが、これによりさまざまなエラーが発生します。自分が何をしているのかわからないので、誰かがこれを達成する方法を説明できるかどうか疑問に思っていました.

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

rust - アンラップ時に共有参照の背後にある値の外に移動できません

これは私が実行しようとしているコードです:

( Rust プレイグラウンドで)

Rust の以前のバージョンでは、次のエラーが発生します。

そして、より現代的なバージョンでは:

ボローチェッカーの問題についてはすでに多くのドキュメントがあるようですが、それを読んでもまだ問題がわかりません。

なぜこれがエラーなのですか?どうすれば解決できますか?

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

rust - ボックスを保持できないのはなぜですか?

次のコードを考えてみましょう (遊び場で):

次のエラー メッセージが表示されます。

理由がわかりません。を呼び出すとis_even、この関数に所有権が与えられますが、その関数の最後にis_evenは所有権が必要なくなります。mainこれは不変 (読み取り専用) の所有権の譲渡であるため、保留時に削除されないことが確実ですinteger-> 使用しても安全と思われます。

それでもこのエラーがあります。その理由と回避策は何ですか?

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

rust - Rust 借用チェッカーとの戦い

このコードは私には問題なく動作するように見えますが、錆の借用チェッカーはそれを好みません:

別の関数を使用することはできず、代わりに 2 つの for ループ部分を使用することはできなかったと思いますが、それは慣用的な Rust ではなく、適切なコーディング方法でもありません。実際、私はそれを試しましたが、移動した値を使用していることを示しているだけです。ここに私が得ているいくつかのエラーがあります:

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

vector - 同じメソッドでベクター内の要素を見つけてプッシュする

私の実装は面倒すぎると感じており、この単純なことを実装するためのより良い方法があると思います。

ゲーム ボードを表す構造体があり、Gridグリッドにセルを追加するメソッドがあります。このメソッド ( add_cell) は、セルを追加する前にグリッドにセルが既に存在するかどうかを確認します。

の可変/不変借用でのコンパイルエラーを回避するために、宣言の後に偽のスコープを配置しました。とにかく、このトリックは別のアプローチを使用することを避けることができると思います。is_not_yet_inself.cells