1use std::time::Duration;
2use js_sys::{Promise};
3use web_sys::{window};
4use wasm_bindgen_futures::JsFuture;
5use wasm_bindgen::prelude::*;
6
7
8pub async fn sleep(duration: Duration) {
12 let promise = Promise::new(&mut |yes, _| {
13 window().unwrap().set_timeout_with_callback_and_timeout_and_arguments_0(&yes, duration.as_millis() as i32).unwrap();
14 });
15 let js_fut = JsFuture::from(promise);
16 js_fut.await.unwrap();
17}
18
19#[wasm_bindgen]
20extern "C" {
21 #[wasm_bindgen(js_namespace = console)]
22 pub fn log(s: &str);
23
24 #[wasm_bindgen(js_namespace = console)]
25 pub fn error(s: &str);
26}
27
28#[macro_export]
29macro_rules! log {
32 ($($t:tt)*) => ($crate::system::log(&format_args!($($t)*).to_string()))
33}
34
35#[macro_export]
36macro_rules! elog {
39 ($($t:tt)*) => ($crate::system::error(&format_args!($($t)*).to_string()))
40}