0.1.13 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
BSD-3-Clause - BSD 3-Clause "New" or "Revised" LicenseThis crate is no longer maintained. Please consider creating a fork or using web-time instead. Or reach out if
you are interested in taking over its maintenance.
If you call std::time::Instant::now() on a WASM platform, it will panic. This crate provides a partial
replacement for std::time::Instant that works on WASM too. This defines the type instant::Instant which is:
wasm32-unknown-unknown or wasm32-unknown-asmjs
and you enabled either the stdweb or the wasm-bindgen feature. This emulation is based on the javascript performance.now() function.std::time::Instant otherwise.Note that even if the stdweb or wasm-bindgen feature is enabled, this crate will continue to rely on std::time::Instant
as long as you are not targeting wasm32. This allows for portable code that will work on both native and WASM platforms.
This crate also exports the function instant::now() which returns a representation of the current time as an f64, expressed in milliseconds, in a platform-agnostic way. instant::now() will either:
performance.now() when compiling for a WASM platform with the features stdweb or wasm-bindgen enabled, or using a custom javascript function.Note: The old feature, now, has been deprecated. instant::now() is always exported and the now feature flag no longer has any effect. It remains listed in Cargo.toml to avoid introducing breaking changes and may be removed in future versions.
Cargo.toml:
[dependencies]
instant = "0.1"main.rs:
fn main() {
// Will be the same as `std::time::Instant`.
let now = instant::Instant::now();
}This example shows the use of the stdweb feature. It would be similar with wasm-bindgen.
Cargo.toml:
[dependencies]
instant = { version = "0.1", features = [ "stdweb" ] }main.rs:
fn main() {
// Will emulate `std::time::Instant` based on `performance.now()`.
let now = instant::Instant::now();
}This example shows the use of the inaccurate feature.
Cargo.toml:
[dependencies]
instant = { version = "0.1", features = [ "wasm-bindgen", "inaccurate" ] }main.rs:
fn main() {
// Will emulate `std::time::Instant` based on `Date.now()`.
let now = instant::Instant::now();
}Cargo.toml:
[features]
stdweb = [ "instant/stdweb" ]
wasm-bindgen = [ "instant/wasm-bindgen" ]
[dependencies]
instant = "0.1"lib.rs:
fn my_function() {
// Will select the proper implementation depending on the
// feature selected by the user.
let now = instant::Instant::now();
}Cargo.toml:
[features]
stdweb = [ "instant/stdweb" ]
wasm-bindgen = [ "instant/wasm-bindgen" ]
[dependencies]
instant = "0.1"lib.rs:
fn my_function() {
// Will select the proper implementation depending on the
// feature selected by the user.
let now_instant = instant::Instant::now();
let now_milliseconds = instant::now(); // In milliseconds.
}Cargo.toml:
[dependencies]
instant = "0.1"lib.rs:
fn my_function() {
// Will use the 'now' javascript implementation.
let now_instant = instant::Instant::now();
let now_milliseconds = instant::now(); // In milliseconds.
}javascript WASM bindings file:
function now() {
return Date.now() / 1000.0;
}