1unsafe extern "C" {
4 #[cfg(target_family = "wasm")]
5 fn env_print(ptr: i32, len: i32);
6 fn env_now() -> i32;
7 fn env_var(ptr: i32, len: i32) -> i32;
8 fn env_random() -> i32;
9}
10
11#[doc(hidden)]
12#[cfg(target_family = "wasm")]
13pub fn print_it(s: String) {
14 let (ptr, len) = ft_sys::memory::string_to_bytes_ptr(s);
15 unsafe { env_print(ptr, len) }
16}
17
18#[doc(hidden)]
19#[cfg(not(target_family = "wasm"))]
20pub fn print_it(s: String) {
21 println!("{s}");
22}
23
24#[macro_export]
28macro_rules! println {
29 ($($t:tt)*) => {{
30 $crate::env::print_it(format!($($t)*))
31 }};
32}
33
34pub fn now() -> chrono::DateTime<chrono::Utc> {
36 let ptr = unsafe { env_now() };
37 ft_sys::memory::json_from_ptr(ptr)
38}
39
40pub fn var(name: String) -> Option<String> {
43 let (ptr, len) = ft_sys::memory::string_to_bytes_ptr(name);
44 let ptr = unsafe { env_var(ptr, len) };
45 ft_sys::memory::json_from_ptr(ptr)
46}
47
48pub fn random() -> f64 {
50 let ptr = unsafe { env_random() };
51 ft_sys::memory::json_from_ptr(ptr)
52}