Add support for Instant for wasm32.

This commit is contained in:
Stephen Chung 2020-06-17 16:50:57 +08:00
parent ae6d5e13a9
commit 2a73841549
5 changed files with 12 additions and 7 deletions

View File

@ -63,3 +63,6 @@ version = "0.3.2"
default-features = false default-features = false
features = ["compile-time-rng"] features = ["compile-time-rng"]
optional = true optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies]
instant= "0.1.4" # WASM implementation of std::time::Instant

View File

@ -27,6 +27,10 @@ use crate::stdlib::{
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
use crate::stdlib::time::Instant; use crate::stdlib::time::Instant;
#[cfg(not(feature = "no_std"))]
#[cfg(target_arch = "wasm32")]
use instant::Instant;
/// Trait to represent any type. /// Trait to represent any type.
/// ///
/// Currently, `Variant` is not `Send` nor `Sync`, so it can practically be any type. /// Currently, `Variant` is not `Send` nor `Sync`, so it can practically be any type.

View File

@ -33,7 +33,6 @@ pub use pkg_std::StandardPackage;
pub use string_basic::BasicStringPackage; pub use string_basic::BasicStringPackage;
pub use string_more::MoreStringPackage; pub use string_more::MoreStringPackage;
#[cfg(not(feature = "no_std"))] #[cfg(not(feature = "no_std"))]
#[cfg(not(target_arch = "wasm32"))]
pub use time_basic::BasicTimePackage; pub use time_basic::BasicTimePackage;
/// Trait that all packages must implement. /// Trait that all packages must implement.

View File

@ -6,7 +6,6 @@ use super::math_basic::BasicMathPackage;
use super::pkg_core::CorePackage; use super::pkg_core::CorePackage;
use super::string_more::MoreStringPackage; use super::string_more::MoreStringPackage;
#[cfg(not(feature = "no_std"))] #[cfg(not(feature = "no_std"))]
#[cfg(not(target_arch = "wasm32"))]
use super::time_basic::BasicTimePackage; use super::time_basic::BasicTimePackage;
use crate::def_package; use crate::def_package;
@ -19,7 +18,6 @@ def_package!(crate:StandardPackage:"_Standard_ package containing all built-in f
#[cfg(not(feature = "no_object"))] #[cfg(not(feature = "no_object"))]
BasicMapPackage::init(lib); BasicMapPackage::init(lib);
#[cfg(not(feature = "no_std"))] #[cfg(not(feature = "no_std"))]
#[cfg(not(target_arch = "wasm32"))]
BasicTimePackage::init(lib); BasicTimePackage::init(lib);
MoreStringPackage::init(lib); MoreStringPackage::init(lib);
}); });

View File

@ -1,5 +1,4 @@
#![cfg(not(target_arch = "wasm32"))] #![cfg(not(feature = "no_std"))]
use super::logic::{eq, gt, gte, lt, lte, ne}; use super::logic::{eq, gt, gte, lt, lte, ne};
use super::math_basic::MAX_INT; use super::math_basic::MAX_INT;
@ -9,13 +8,15 @@ use crate::parser::INT;
use crate::result::EvalAltResult; use crate::result::EvalAltResult;
use crate::token::Position; use crate::token::Position;
#[cfg(not(feature = "no_std"))] #[cfg(not(target_arch = "wasm32"))]
use crate::stdlib::time::Instant; use crate::stdlib::time::Instant;
#[cfg(target_arch = "wasm32")]
use instant::Instant;
#[cfg(not(feature = "no_float"))] #[cfg(not(feature = "no_float"))]
use crate::parser::FLOAT; use crate::parser::FLOAT;
#[cfg(not(feature = "no_std"))]
def_package!(crate:BasicTimePackage:"Basic timing utilities.", lib, { def_package!(crate:BasicTimePackage:"Basic timing utilities.", lib, {
// Register date/time functions // Register date/time functions
lib.set_fn_0("timestamp", || Ok(Instant::now())); lib.set_fn_0("timestamp", || Ok(Instant::now()));