サポートされているクレート
workers-rs ↗(または場合によっては単に wasm-bindgen)を使用してWebAssemblyでWorkersを書く際に、動作が確認された人気のあるRustクレートについて学びます。
各Rustクレートの例には、必要なカスタム設定が含まれています。
これは網羅的なリストではなく、多くのRustクレートはWorkersによってサポートされているwasm32-unknown-unknown ↗ターゲットにコンパイルできます。
場合によっては、デフォルト機能を無効にしたり、Wasm特有の機能を有効にする必要があります。新しい依存関係の追加を考慮することが重要であり、これによりWorkerのサイズが大幅に増加する可能性があります。
Wasmフレンドリーに作成された多くのクレートは、std::timeの代わりにtimeクレートを使用します。timeクレートがWasmで動作するためには、JavaScriptからタイミング情報を取得するためにwasm-bindgen機能を有効にする必要があります。
Tracingは、tracing-webクレートとtracing-subscriberのtime機能を使用することで有効にできます。
Workersにおけるタイミングの制限により、スパンはI/Oを含まない限り、開始時刻と終了時刻が同一になります。
詳細についてはtracingの例 ↗を参照してください。
reqwestライブラリ ↗はWasmにコンパイルでき、wasm-bindgenを使用してJavaScriptのfetch APIに自動的にフックします。
tokio-postgresはWasmにコンパイルできます。workers-rsからのSocketを使用するように構成する必要があります:
詳細についてはtokio-postgresの例 ↗を参照してください。
hyperクレートには、低レベルのconnモジュールと高レベルのClientという2つのHTTPクライアントが含まれています。
connモジュールはWorkersのSocketと一緒に使用できますが、ClientはまだWasmフレンドリーではないタイミング依存関係を必要とします。
詳細についてはhyperの例 ↗を参照してください。