問題タブ [trait-objects]

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

vector - Vec.sort() が静的な有効期間を必要とするように見えるのはなぜですか?

これは、私が直面している問題の非常に単純化された例ですが、trait Thingwhich implementsOrdstruct Objectwhich implements が与えられたThing場合、次の構造体があります。

基本的にキーと を取り、指定されたキーを使用Objectして オブジェクトを の に追加します。これが最適な方法ではないことはわかっていますが、説明のために簡単にしたかったのです。HashMapVec

コンパイラはthings.sort()、次のエラーで呼び出しに文句を言います:

遊び場リンク

この例ですべてのライフタイムを削除すると'a、コードはコンパイルされます。しかし、私の実際のユースケースでは、非静的ライフタイムを許可する必要があります。

誰かがここで何が起こっているのか説明できますか? 静的な有効期間を持つアイテムを含めるsort()必要がありますか? Vecもしそうなら、なぜですか?

良い回避策はありますか?

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

types - 型エイリアスで静的メソッドを呼び出す

ボックス化されたクロージャーを使用しているときに、次の問題に遭遇しました。

最初のケースでは、型エイリアスを使用してnewメソッドを参照していRcますが、2 番目のケースでは直接使用しています。

最初のケースでは、コンパイラは文句を言います:

しかし、2 番目のケースは問題なく動作します。誰かが違いを説明できますか?タイプエイリアスを介して参照する方法はありますかnew、それとも自分でラップする必要がありますか?