Skip to content
Snippets Groups Projects
lib.rs 1.03 KiB
Newer Older
Louis's avatar
Louis committed
//! # Web Instant
//!
//! Provides `Spot`, a version of `Instant` that works both in environments that support `Instant` and
//! `wasm` family targets. On desktop, the internal representation uses `std::time::Instant`. On the
//! web, the internal representation is an `f64`, and uses `js_sys::Date` methods to cover
//! functionality where required
//!
//! All the methods on `Instant` are implemented for `Spot`, so you can just replace uses of
//! `std::time::Instant` with `web_instant::Spot`
//!
Louis's avatar
Louis committed
//! ## Install
Louis's avatar
Louis committed
//! `cargo add web_instant`
Louis's avatar
Louis committed
//! ## Usage
Louis's avatar
Louis committed
//! ```rust
//! use web_instant::Spot;
//! use std::time::Duration;
Louis's avatar
Louis committed
//! fn my_cross_platform_timer(last_time: Spot) {
//! 	let time_diff: Duration = Spot::now() - last_time;
//! 	println!("It has been {} seconds", time_diff.as_secs());
//! }
//! ```

Louis's avatar
Louis committed
#[cfg(not(target_family = "wasm"))]
Louis's avatar
Louis committed
mod instant_desktop;
Louis's avatar
Louis committed
#[cfg(target_family = "wasm")]
Louis's avatar
Louis committed
mod instant_web;

#[cfg(not(target_arch = "wasm32"))]
pub use instant_desktop::Spot;
#[cfg(target_arch = "wasm32")]
pub use instant_web::Spot;