Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/whizsid/wasmtimer-rs

std::time, tokio::time, tokio_util::time Replacement for WASM targets.
https://github.com/whizsid/wasmtimer-rs

async-await browser hacktoberfest rust timer tokio wasm webassembly

Last synced: about 1 hour ago
JSON representation

std::time, tokio::time, tokio_util::time Replacement for WASM targets.

Awesome Lists containing this project

README

        

# wasmtimer-rs

An implementation of `time` based functionalities from `std::time`, `tokio::time`,
`tokio_util::time` for WASM targets. This crate tries to closely
replicate above APIs. Users only have to change their `use` scripts by
using a `cfg` macro.

```rust
#[cfg(not(target_family="wasm"))]
use tokio::time::*;
#[cfg(target_family="wasm")]
use wasmtimer::tokio::*;
```

Check the [API Documentation](https://docs.rs/wasmtimer) for more
details.

## Story

Core idea and core modules in `src/timer` folder were copied from
[this](https://github.com/tomaka/wasm-timer) crate. This crate is
abandoned now due to lack of maintainability. I've hard forked it,
added some additional features and released to use for
[this](https://github.com/google/tarpc/pull/388) PR.

## `tokio::time` vs `wasmtimer`

- `wasmtimer` is only running on WASM browser targets and not using any
`tokio` feature as a dependency.
- This timer crate not supporting
[Auto-advance](https://docs.rs/tokio/latest/tokio/time/fn.pause.html#auto-advance)
like in the tokio crate. Because we can not track the background
tasks(`Promise`) in browser scope. If we implemented such without caring
about background tasks, then this implementation will not match with the
tokio's original implementation.

## Features

- Serde Support (`serde` feature flag)
- Worker and NodeJS Support
- Test Utilities