問題タブ [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.
rust - クロージャーで動的ディスパッチを使用して値が特性オブジェクトに変換されないのはなぜですか?
次のコードがあるとします。
コンパイラは次のように文句を言います:
しかし、それは次のように置き換えることで機能しseq
ます:
コードはここでテストできます。
唯一の違いは、失敗した例ではクロージャーが使用されているのに対し、他の例では (名前付き?) 関数が使用されていることですが、ロジックは同じです。それは一生の問題のように思えますが、それを理解することができませんでした. また、Option::map
熱心に値を消費することになっている場合は、クロージャーをすぐに使用する必要があります。
クロージャーの例が失敗するのはなぜですか?
concurrency - Rust キャッシュ非同期トレイト
値が有効である限りキャッシュし、無効になったときに更新しようとすると、問題が発生します。この問題は、非同期実行間で状態を共有しようとしたことが原因であると考えています。さらに、このコンポーネントはマルチスレッド/並行環境に存在します。
修正方法がわからないというエラーが表示されます
以下は、一般的に私のユースケースと私が見ている問題を捉えた、私が思いつくことができる最小限の例です (所有権の問題もいくつかあります)。 これがコードの遊び場です。
これを例に含める方法がわかりませんでしたが、main
複数のワーカースレッドが同時に/並行して実行され、各呼び出しCredsProvider.get_creds
が実行され、これらのクレデンシャルを使用していくつかの作業が実行されると想像してください(完全な動作例にそれを追加できる場合、それは私の啓蒙のために非常に感謝しています)。AssumeMyCredsProvider.inner_get_creds
はコストが高く、キャッシュされた資格情報の有効期限が切れたときにのみ呼び出す必要があります。
これを解決するにはどうすればよいですか?で十分だと思いましたArc<Mutex<>>
が、そうではないようです。ある時点で、Creds
and trait を作成できるようにしようとArc<Mutex<Option<Box<dyn Creds + Send + Sync>>>>
しましたが、それは間違った道のように感じられ、うまくいきませんでした。
ありがとう。