safina-timer
This is a safe Rust library providing async sleep_for
and sleep_until
functions.
These functions return futures that complete at the specified time.
You can use it with safina
.
Features
Limitations
- Requires Rust
nightly
, for OnceCell
- Timers complete around 2ms late, but never early
- Allocates memory
Examples
rust
safina_timer::sleep_for(Duration::from_secs(10)).await.unwrap();
rust
let deadline = Instant::now() + Duration::from_millis(500);
safina_timer::sleep_until(deadline).await.unwrap();
Documentation
https://docs.rs/safina-timer
Alternatives
- futures-timer
- popular
- Supports: Wasm, Linux, Windows, macOS
- Contains generous amounts of
unsafe
code
- Uses
std::thread::park_timeout
as its source of time
- async-io
- popular
- single and repeating timers
- Supports: Linux, Windows, macOS, iOS, Android, and many others.
- Uses polling crate
which makes unsafe calls to OS.
- async-timer
- Supports: Linux & Android
- Makes unsafe calls to OS
- tokio
- very popular
- single and repeating timers
- Supports: Linux, macOS, other unix-like OSes, Windows
- Fast, internally complicated, and full of
unsafe
- embedded-async-timer
- nostd
- Supports: baremetal
Release Process
- Edit
Cargo.toml
and bump version number.
- Run
./release.sh
Changelog
- v0.1.0 - First published version
TO DO
- DONE - Implement
sleep_until
- DONE - Implement
sleep_for
- DONE - Add tests
- Add docs
- Publish on crates.io
License: Apache-2.0