← Cloudflare Workers / workers / languages / rust
Поддерживаемые crates
Контекст
Подробнее о популярных крейтах Rust, которые подтверждённо работают в Workers при использовании workers-rs ↗ (или в некоторых случаях просто wasm-bindgen), чтобы писать Workers на WebAssembly.
Каждый пример крейта Rust включает необходимую особую конфигурацию.
Список не является исчерпывающим: многие крейты Rust можно скомпилировать в wasm32-unknown-unknown ↗ target, поддерживаемую Workers.
В некоторых случаях для этого может потребоваться отключить функции по умолчанию или включить функцию, специфичную для Wasm. Важно учитывать добавление новых зависимостей, поскольку это может значительно увеличить размер вашего Worker.
time
Многие crates, адаптированные для Wasm, используют time крейт вместо std::time. Для time крейт для работы в Wasm, wasm-bindgen функция должна быть включена, чтобы получать информацию о времени выполнения из JavaScript.
tracing
Трассировку можно включить с помощью tracing-web крейт и time функцию для tracing-subscriber.
Из-за ограничения по времени выполнения в Workers промежутки (spans) будут иметь одинаковое время начала и окончания, если они не охватывают операции ввода-вывода.
См. tracing пример ↗, где это описано подробнее.
reqwest
reqwest библиотека ↗ можно скомпилировать в Wasm, и он подключается к JavaScript fetch API автоматически с помощью wasm-bindgen.
tokio-postgres
tokio-postgres можно скомпилировать в Wasm. Для этого требуется настроить использование Socket от workers-rs:
См. tokio-postgres пример ↗, где это описано подробнее.
hyper
hyper крейт содержит два HTTP-клиента: низкоуровневый conn модуль и высокоуровневый Client.
conn модуль можно использовать с Workers Socket, однако Client требует зависимостей, связанных со временем выполнения, которые
пока не полностью совместимы с Wasm.
См. hyper пример ↗, где это описано подробнее.