bobcat_console/
lib.rs

1#![no_std]
2
3extern crate alloc;
4
5pub use alloc::format;
6
7#[cfg(all(target_family = "wasm", target_os = "unknown"))]
8mod impls {
9    #[link(wasm_import_module = "console")]
10    unsafe extern "C" {
11        pub fn log_txt(ptr: *const u8, len: usize);
12    }
13}
14
15#[cfg(not(all(target_family = "wasm", target_os = "unknown")))]
16mod impls {
17    pub unsafe fn log_txt(_: *const u8, _: usize) {}
18}
19
20pub use impls::log_txt;
21
22#[macro_export]
23macro_rules! console {
24    ($val:expr) => {
25    {
26        let tmp = $val;
27        let msg = $crate::format!("[{}:{}] {} = {:#?}\n", file!(), line!(), stringify!($val), &tmp);
28        unsafe { $crate::log_txt(msg.as_ptr(), msg.len()) };
29        tmp
30    }};
31    ($($vals:expr),+ $(,)?) => {
32    {
33        let tup = ($($vals),+);
34        let msg = $crate::format!("[{}:{}] {} = {:#?}\n", file!(), line!(), stringify!(($($vals),+)), &tup);
35        unsafe { $crate::log_txt(msg.as_ptr(), msg.len()) };
36        tup
37    }};
38}