Complete drop-in replacement for [std::time
] that works in the browser.
Currently [Instant
] and [SystemTime
] will simply panic when using the
wasm32-unknown-unknown
target. This implementation uses
[Performance.now()
] to offer a drop-in replacement that works in the
browser.
At the same time the library will simply re-export [std::time
] when not
using the wasm32-unknown-unknown
target and will also not pull in any
dependencies.
Additionally, if compiled with target-feature = "atomics"
it will
synchronize the timestamps to account for different context's, like web
workers. See [Performance.timeOrigin
] for more information.
This library specifically targets browsers, that support
[Performance.now()
], with the wasm32-unknown-unknown
target. Emscripten
is not supported. WASI doesn't require support as it has it's own native API
to deal with [std::time
].
Furthermore it depends on [wasm-bindgen
], which is required. This library
will continue to depend on it until a viable alternative presents itself, in
which case multiple ecosystems could be supported.
Currently a known bug is affecting browsers on operating system other then
Windows. This bug prevents [Instant
] from continuing to tick when the
context is asleep. This doesn't necessarily conflict with Rusts requirements
of [Instant
], but might still be unexpected.
See the MDN documentation on this for more information.
You can simply import the types you need: ```rust use web_time::{Instant, SystemTime};
let now = Instant::now(); let time = SystemTime::now(); ```
As this library heavily relies on [wasm-bindgen
] the MSRV depends on it.
At the point of time this was written the MSRV is 1.56.
instant is a popular alternative! However the API it implements doesn't match [
std::time
] exactly.
See the [CHANGELOG] file for details.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.