コンテンツにスキップ

サポートされているクレート

背景

workers-rs(または場合によっては単に wasm-bindgen)を使用してWebAssemblyでWorkersを書く際に、動作が確認された人気のあるRustクレートについて学びます。 各Rustクレートの例には、必要なカスタム設定が含まれています。

これは網羅的なリストではなく、多くのRustクレートはWorkersによってサポートされているwasm32-unknown-unknownターゲットにコンパイルできます。 場合によっては、デフォルト機能を無効にしたり、Wasm特有の機能を有効にする必要があります。新しい依存関係の追加を考慮することが重要であり、これによりWorkerのサイズが大幅に増加する可能性があります。

time

Wasmフレンドリーに作成された多くのクレートは、std::timeの代わりにtimeクレートを使用します。timeクレートがWasmで動作するためには、JavaScriptからタイミング情報を取得するためにwasm-bindgen機能を有効にする必要があります。

tracing

Tracingは、tracing-webクレートとtracing-subscribertime機能を使用することで有効にできます。 Workersにおけるタイミングの制限により、スパンはI/Oを含まない限り、開始時刻と終了時刻が同一になります。

詳細についてはtracingの例を参照してください。

reqwest

reqwestライブラリはWasmにコンパイルでき、wasm-bindgenを使用してJavaScriptのfetch APIに自動的にフックします。

tokio-postgres

tokio-postgresはWasmにコンパイルできます。workers-rsからのSocketを使用するように構成する必要があります:

詳細についてはtokio-postgresの例を参照してください。

hyper

hyperクレートには、低レベルのconnモジュールと高レベルのClientという2つのHTTPクライアントが含まれています。 connモジュールはWorkersのSocketと一緒に使用できますが、ClientはまだWasmフレンドリーではないタイミング依存関係を必要とします。

詳細についてはhyperの例を参照してください。