diff options
Diffstat (limited to 'vendor/instant')
-rw-r--r-- | vendor/instant/.cargo-checksum.json | 1 | ||||
-rw-r--r-- | vendor/instant/AUTHORS | 2 | ||||
-rw-r--r-- | vendor/instant/CHANGELOGS.md | 7 | ||||
-rw-r--r-- | vendor/instant/Cargo.toml | 81 | ||||
-rw-r--r-- | vendor/instant/LICENSE | 27 | ||||
-rw-r--r-- | vendor/instant/README.md | 143 | ||||
-rw-r--r-- | vendor/instant/src/lib.rs | 22 | ||||
-rw-r--r-- | vendor/instant/src/native.rs | 9 | ||||
-rw-r--r-- | vendor/instant/src/wasm.rs | 240 | ||||
-rw-r--r-- | vendor/instant/tests/wasm.rs | 57 |
10 files changed, 0 insertions, 589 deletions
diff --git a/vendor/instant/.cargo-checksum.json b/vendor/instant/.cargo-checksum.json deleted file mode 100644 index 42dbf0c..0000000 --- a/vendor/instant/.cargo-checksum.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{"AUTHORS":"451a1be16acafff0cb0eaedc49b46063cc6ce087d0c36f6d64d67aa93d20e485","CHANGELOGS.md":"bb587c08dd9b1f04cba934a241a99655f9d7e38bc70e4d45feca95efa09bd799","Cargo.toml":"a64c7ab3a5906d2e7360fb30cc23e5042bd7c22aa640e8e47bb3dad1a3dbf8eb","LICENSE":"2510d4cde8c4e13d8c54b9fe2a9d144daf567ec8d02832f1454e7ca2d58cdda6","README.md":"22b54b9f16ad18144f29e50d1b1f16791c5e8f1afee81265bad9b72f6efb8e62","src/lib.rs":"cc4822f1c4ac7926859045608d91e3f855914468039bffb75bc9b455c0950ab3","src/native.rs":"bd4cd1f888b83a9eaf07f640bef51c4f16138ceb427a685d3ab07152eec53d1c","src/wasm.rs":"c17c7bf8a28fee134444201212d1cf62bff49650f297e42367ec1b7aeaddc7c9","tests/wasm.rs":"1b81ff541bec36bac824a7ec41cd15f68d9919c3c7522290aa003fa4c253e840"},"package":"7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"}
\ No newline at end of file diff --git a/vendor/instant/AUTHORS b/vendor/instant/AUTHORS deleted file mode 100644 index 6f2ad5b..0000000 --- a/vendor/instant/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Main developer: - * Sébastien Crozet <developer@crozet.re>
\ No newline at end of file diff --git a/vendor/instant/CHANGELOGS.md b/vendor/instant/CHANGELOGS.md deleted file mode 100644 index 0ecfaee..0000000 --- a/vendor/instant/CHANGELOGS.md +++ /dev/null @@ -1,7 +0,0 @@ -# v0.1.12 -## Added -- Add `SystemTime` which works in both native and WASM environments. - -## Modified -- The `now` function is always available now: there is no need to enable the `now` feature any more. The `now` feature - still exists (but doesn’t do anything) for backwards compatibility.
\ No newline at end of file diff --git a/vendor/instant/Cargo.toml b/vendor/instant/Cargo.toml deleted file mode 100644 index fcd0adf..0000000 --- a/vendor/instant/Cargo.toml +++ /dev/null @@ -1,81 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -name = "instant" -version = "0.1.12" -authors = ["sebcrozet <developer@crozet.re>"] -description = "A partial replacement for std::time::Instant that works on WASM too." -readme = "README.md" -keywords = ["time", "wasm"] -license = "BSD-3-Clause" -repository = "https://github.com/sebcrozet/instant" -[dependencies.cfg-if] -version = "1.0" -[dev-dependencies.wasm-bindgen-test] -version = "0.3" - -[features] -inaccurate = [] -now = [] -wasm-bindgen = ["js-sys", "wasm-bindgen_rs", "web-sys"] -[target.asmjs-unknown-emscripten.dependencies.js-sys] -version = "0.3" -optional = true - -[target.asmjs-unknown-emscripten.dependencies.stdweb] -version = "0.4" -optional = true - -[target.asmjs-unknown-emscripten.dependencies.wasm-bindgen_rs] -version = "0.2" -optional = true -package = "wasm-bindgen" - -[target.asmjs-unknown-emscripten.dependencies.web-sys] -version = "0.3" -features = ["Window", "Performance", "PerformanceTiming"] -optional = true -[target.wasm32-unknown-emscripten.dependencies.js-sys] -version = "0.3" -optional = true - -[target.wasm32-unknown-emscripten.dependencies.stdweb] -version = "0.4" -optional = true - -[target.wasm32-unknown-emscripten.dependencies.wasm-bindgen_rs] -version = "0.2" -optional = true -package = "wasm-bindgen" - -[target.wasm32-unknown-emscripten.dependencies.web-sys] -version = "0.3" -features = ["Window", "Performance", "PerformanceTiming"] -optional = true -[target.wasm32-unknown-unknown.dependencies.js-sys] -version = "0.3" -optional = true - -[target.wasm32-unknown-unknown.dependencies.stdweb] -version = "0.4" -optional = true - -[target.wasm32-unknown-unknown.dependencies.wasm-bindgen_rs] -version = "0.2" -optional = true -package = "wasm-bindgen" - -[target.wasm32-unknown-unknown.dependencies.web-sys] -version = "0.3" -features = ["Window", "Performance", "PerformanceTiming"] -optional = true diff --git a/vendor/instant/LICENSE b/vendor/instant/LICENSE deleted file mode 100644 index a301457..0000000 --- a/vendor/instant/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2019, Sébastien Crozet -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the author nor the names of its contributors may be used - to endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/instant/README.md b/vendor/instant/README.md deleted file mode 100644 index 53f5041..0000000 --- a/vendor/instant/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# Instant - -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: - -* A struct emulating the behavior of **std::time::Instant** if you are targeting `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. -* A type alias for `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: - -* Call `performance.now()` when compiling for a WASM platform with the features **stdweb** or **wasm-bindgen** enabled, or using a custom javascript function. -* Return the time elapsed since the *Unix Epoch* on *native*, *non-WASM* platforms. - -*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. - -## Examples -### Using `instant` for a native platform. -_Cargo.toml_: -```toml -[dependencies] -instant = "0.1" -``` - -_main.rs_: -```rust -fn main() { - // Will be the same as `std::time::Instant`. - let now = instant::Instant::now(); -} -``` - ------ - -### Using `instant` for a WASM platform. -This example shows the use of the `stdweb` feature. It would be similar with `wasm-bindgen`. - -_Cargo.toml_: -```toml -[dependencies] -instant = { version = "0.1", features = [ "stdweb" ] } -``` - -_main.rs_: -```rust -fn main() { - // Will emulate `std::time::Instant` based on `performance.now()`. - let now = instant::Instant::now(); -} -``` - ------ - -### Using `instant` for a WASM platform where `performance.now()` is not available. -This example shows the use of the `inaccurate` feature. - -_Cargo.toml_: -```toml -[dependencies] -instant = { version = "0.1", features = [ "wasm-bindgen", "inaccurate" ] } -``` - -_main.rs_: -```rust -fn main() { - // Will emulate `std::time::Instant` based on `Date.now()`. - let now = instant::Instant::now(); -} -``` - - ------ - -### Using `instant` for any platform enabling a feature transitively. -_Cargo.toml_: -```toml -[features] -stdweb = [ "instant/stdweb" ] -wasm-bindgen = [ "instant/wasm-bindgen" ] - -[dependencies] -instant = "0.1" -``` - -_lib.rs_: -```rust -fn my_function() { - // Will select the proper implementation depending on the - // feature selected by the user. - let now = instant::Instant::now(); -} -``` - ------ - -### Using `instant::now()` -_Cargo.toml_: -```toml -[features] -stdweb = [ "instant/stdweb" ] -wasm-bindgen = [ "instant/wasm-bindgen" ] - -[dependencies] -instant = "0.1" -``` - -_lib.rs_: -```rust -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. -} -``` - -### Using the feature `now` without `stdweb` or `wasm-bindgen`. -_Cargo.toml_: -```toml -[dependencies] -instant = "0.1" -``` - -_lib.rs_: -```rust -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_: -```js -function now() { - return Date.now() / 1000.0; -} -``` diff --git a/vendor/instant/src/lib.rs b/vendor/instant/src/lib.rs deleted file mode 100644 index b7e1da3..0000000 --- a/vendor/instant/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -cfg_if::cfg_if! { - if #[cfg(any( - all(target_arch = "wasm32", not(target_os = "wasi")), - target_arch = "asmjs" - ))] { - #[cfg(all(feature = "stdweb", not(feature = "wasm-bindgen")))] - #[macro_use] - extern crate stdweb; - - mod wasm; - pub use wasm::Instant; - pub use crate::wasm::now; - pub use wasm::SystemTime; - } else { - mod native; - pub use native::Instant; - pub use native::now; - pub use native::SystemTime; - } -} - -pub use std::time::Duration; diff --git a/vendor/instant/src/native.rs b/vendor/instant/src/native.rs deleted file mode 100644 index a1412aa..0000000 --- a/vendor/instant/src/native.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub type Instant = std::time::Instant; -pub type SystemTime = std::time::SystemTime; - -/// The current time, expressed in milliseconds since the Unix Epoch. -pub fn now() -> f64 { - std::time::SystemTime::now().duration_since(std::time::SystemTime::UNIX_EPOCH) - .expect("System clock was before 1970.") - .as_secs_f64() * 1000.0 -} diff --git a/vendor/instant/src/wasm.rs b/vendor/instant/src/wasm.rs deleted file mode 100644 index 3e416b4..0000000 --- a/vendor/instant/src/wasm.rs +++ /dev/null @@ -1,240 +0,0 @@ -use std::cmp::Ordering; -use std::ops::{Add, AddAssign, Sub, SubAssign}; -use std::time::Duration; - -#[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Hash)] -pub struct Instant(Duration); - -impl Ord for Instant { - fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.partial_cmp(other) - .expect("an instant should never be NaN or Inf.") - } -} -impl Eq for Instant {} - -impl Instant { - #[inline] - pub fn now() -> Self { - Instant(duration_from_f64(now())) - } - - #[inline] - pub fn duration_since(&self, earlier: Instant) -> Duration { - assert!( - earlier.0 <= self.0, - "`earlier` cannot be later than `self`." - ); - self.0 - earlier.0 - } - - #[inline] - pub fn elapsed(&self) -> Duration { - Self::now().duration_since(*self) - } - - /// Returns `Some(t)` where `t` is the time `self + duration` if `t` can be represented as - /// `Instant` (which means it's inside the bounds of the underlying data structure), `None` - /// otherwise. - #[inline] - pub fn checked_add(&self, duration: Duration) -> Option<Instant> { - self.0.checked_add(duration).map(Instant) - } - - /// Returns `Some(t)` where `t` is the time `self - duration` if `t` can be represented as - /// `Instant` (which means it's inside the bounds of the underlying data structure), `None` - /// otherwise. - #[inline] - pub fn checked_sub(&self, duration: Duration) -> Option<Instant> { - self.0.checked_sub(duration).map(Instant) - } - - /// Returns the amount of time elapsed from another instant to this one, or None if that - /// instant is later than this one. - #[inline] - pub fn checked_duration_since(&self, earlier: Instant) -> Option<Duration> { - if earlier.0 > self.0 { - None - } else { - Some(self.0 - earlier.0) - } - } - - /// Returns the amount of time elapsed from another instant to this one, or zero duration if - /// that instant is later than this one. - #[inline] - pub fn saturating_duration_since(&self, earlier: Instant) -> Duration { - self.checked_duration_since(earlier).unwrap_or_default() - } -} - -impl Add<Duration> for Instant { - type Output = Self; - - #[inline] - fn add(self, rhs: Duration) -> Self { - Instant(self.0 + rhs) - } -} - -impl AddAssign<Duration> for Instant { - #[inline] - fn add_assign(&mut self, rhs: Duration) { - self.0 += rhs - } -} - -impl Sub<Duration> for Instant { - type Output = Self; - - #[inline] - fn sub(self, rhs: Duration) -> Self { - Instant(self.0 - rhs) - } -} - -impl Sub<Instant> for Instant { - type Output = Duration; - - #[inline] - fn sub(self, rhs: Instant) -> Duration { - self.duration_since(rhs) - } -} - -impl SubAssign<Duration> for Instant { - #[inline] - fn sub_assign(&mut self, rhs: Duration) { - self.0 -= rhs - } -} - -fn duration_from_f64(millis: f64) -> Duration { - Duration::from_millis(millis.trunc() as u64) - + Duration::from_nanos((millis.fract() * 1.0e6) as u64) -} - -#[cfg(all(feature = "stdweb", not(feature = "wasm-bindgen")))] -#[allow(unused_results)] // Needed because the js macro triggers it. -pub fn now() -> f64 { - use stdweb::unstable::TryInto; - - // https://developer.mozilla.org/en-US/docs/Web/API/Performance/now - #[cfg(not(feature = "inaccurate"))] - let v = js! { return performance.now(); }; - #[cfg(feature = "inaccurate")] - let v = js! { return Date.now(); }; - v.try_into().unwrap() -} - -#[cfg(feature = "wasm-bindgen")] -pub fn now() -> f64 { - #[cfg(not(feature = "inaccurate"))] - let now = { - use wasm_bindgen_rs::prelude::*; - use wasm_bindgen_rs::JsCast; - js_sys::Reflect::get(&js_sys::global(), &JsValue::from_str("performance")) - .expect("failed to get performance from global object") - .unchecked_into::<web_sys::Performance>() - .now() - }; - #[cfg(feature = "inaccurate")] - let now = js_sys::Date::now(); - now -} - -// The JS now function is in a module so it won't have to be renamed -#[cfg(not(any(feature = "wasm-bindgen", feature = "stdweb")))] -mod js { - extern "C" { - #[cfg(not(target_os = "emscripten"))] - pub fn now() -> f64; - #[cfg(target_os = "emscripten")] - pub fn _emscripten_get_now() -> f64; - } -} -// Make the unsafe extern function "safe" so it can be called like the other 'now' functions -#[cfg(not(any(feature = "wasm-bindgen", feature = "stdweb")))] -pub fn now() -> f64 { - #[cfg(not(target_os = "emscripten"))] - return unsafe { js::now() }; - #[cfg(target_os = "emscripten")] - return unsafe { js::_emscripten_get_now() }; -} - -/// Returns the number of millisecods elapsed since January 1, 1970 00:00:00 UTC. -#[cfg(any(feature = "wasm-bindgen", feature = "stdweb"))] -fn get_time() -> f64 { - #[cfg(feature = "wasm-bindgen")] - return js_sys::Date::now(); - #[cfg(all(feature = "stdweb", not(feature = "wasm-bindgen")))] - { - let v = js! { return Date.now(); }; - return v.try_into().unwrap(); - } -} - -#[derive(Copy, Clone, Debug, PartialEq, PartialOrd)] -pub struct SystemTime(f64); - -impl SystemTime { - pub const UNIX_EPOCH: SystemTime = SystemTime(0.0); - - pub fn now() -> SystemTime { - cfg_if::cfg_if! { - if #[cfg(any(feature = "wasm-bindgen", feature = "stdweb"))] { - SystemTime(get_time()) - } else { - SystemTime(now()) - } - } - } - - pub fn duration_since(&self, earlier: SystemTime) -> Result<Duration, ()> { - let dur_ms = self.0 - earlier.0; - if dur_ms < 0.0 { - return Err(()); - } - Ok(Duration::from_millis(dur_ms as u64)) - } - - pub fn elapsed(&self) -> Result<Duration, ()> { - self.duration_since(SystemTime::now()) - } - - pub fn checked_add(&self, duration: Duration) -> Option<SystemTime> { - Some(*self + duration) - } - - pub fn checked_sub(&self, duration: Duration) -> Option<SystemTime> { - Some(*self - duration) - } -} - -impl Add<Duration> for SystemTime { - type Output = SystemTime; - - fn add(self, other: Duration) -> SystemTime { - SystemTime(self.0 + other.as_millis() as f64) - } -} - -impl Sub<Duration> for SystemTime { - type Output = SystemTime; - - fn sub(self, other: Duration) -> SystemTime { - SystemTime(self.0 - other.as_millis() as f64) - } -} - -impl AddAssign<Duration> for SystemTime { - fn add_assign(&mut self, rhs: Duration) { - *self = *self + rhs; - } -} - -impl SubAssign<Duration> for SystemTime { - fn sub_assign(&mut self, rhs: Duration) { - *self = *self - rhs; - } -} diff --git a/vendor/instant/tests/wasm.rs b/vendor/instant/tests/wasm.rs deleted file mode 100644 index e858faa..0000000 --- a/vendor/instant/tests/wasm.rs +++ /dev/null @@ -1,57 +0,0 @@ -extern crate wasm_bindgen_test; - -use instant::{Instant, SystemTime}; -use std::time::Duration; -use wasm_bindgen_test::*; - -wasm_bindgen_test_configure!(run_in_browser); -// run these tests using: wasm-pack test --chrome --headless -- --features wasm-bindgen - -#[wasm_bindgen_test] -fn test_instant_now() { - let now = Instant::now(); - #[cfg(feature = "inaccurate")] - while now.elapsed().as_millis() == 0 {} - #[cfg(not(feature = "inaccurate"))] - assert!(now.elapsed().as_nanos() > 0); -} - -#[wasm_bindgen_test] -fn test_duration() { - let now = Instant::now(); - let one_sec = Duration::from_secs(1); - assert!(now.elapsed() < one_sec); -} - -// Duration::new will overflow when you have u64::MAX seconds and one billion nanoseconds. -// <https://doc.rust-lang.org/std/time/struct.Duration.html#method.new> -const ONE_BILLION: u32 = 1_000_000_000; - -#[wasm_bindgen_test] -fn test_checked_add() { - let now = Instant::now(); - - assert!(now.checked_add(Duration::from_millis(1)).is_some()); - assert_eq!( - None, - now.checked_add(Duration::new(u64::MAX, ONE_BILLION - 1)) - ); -} - -#[wasm_bindgen_test] -fn test_checked_sub() { - let now = Instant::now(); - - assert!(now.checked_sub(Duration::from_millis(1)).is_some()); - assert!(now - .checked_sub(Duration::new(u64::MAX, ONE_BILLION - 1)) - .is_none()); -} - -#[wasm_bindgen_test] -fn test_system_time() { - assert!(SystemTime::UNIX_EPOCH - .duration_since(SystemTime::now()) - .is_err()); -} - |