INTEGRITY Документация

Поддерживаемые 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 пример, где это описано подробнее.