問題タブ [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.
vector - Vec.sort() が静的な有効期間を必要とするように見えるのはなぜですか?
これは、私が直面している問題の非常に単純化された例ですが、trait Thing
which implementsOrd
とstruct Object
which implements が与えられたThing
場合、次の構造体があります。
基本的にキーと を取り、指定されたキーを使用Object
して オブジェクトを の に追加します。これが最適な方法ではないことはわかっていますが、説明のために簡単にしたかったのです。HashMap
Vec
コンパイラはthings.sort()
、次のエラーで呼び出しに文句を言います:
この例ですべてのライフタイムを削除すると'a
、コードはコンパイルされます。しかし、私の実際のユースケースでは、非静的ライフタイムを許可する必要があります。
誰かがここで何が起こっているのか説明できますか? 静的な有効期間を持つアイテムを含めるsort()
必要がありますか? Vec
もしそうなら、なぜですか?
良い回避策はありますか?
types - 型エイリアスで静的メソッドを呼び出す
ボックス化されたクロージャーを使用しているときに、次の問題に遭遇しました。
最初のケースでは、型エイリアスを使用してnew
メソッドを参照していRc
ますが、2 番目のケースでは直接使用しています。
最初のケースでは、コンパイラは文句を言います:
しかし、2 番目のケースは問題なく動作します。誰かが違いを説明できますか?タイプエイリアスを介して参照する方法はありますかnew
、それとも自分でラップする必要がありますか?