1pub mod events;
2#[doc(hidden)]
3pub mod exports;
4pub mod invoker;
5pub mod ref_funcs;
6pub mod runtime;
7pub mod types {
8 pub use cfx_wasm_rt_types::*;
9
10 pub trait ToMessagePack {
11 fn to_message_pack(&self) -> Vec<u8>;
12 }
13
14 impl<T: serde::Serialize> ToMessagePack for T {
15 fn to_message_pack(&self) -> Vec<u8> {
16 rmp_serde::to_vec(self).unwrap_or_else(|_| vec![])
17 }
18 }
19}
20
21mod ffi {
22 #[link(wasm_import_module = "host")]
23 extern "C" {
24 pub fn log(ptr: i32, len: i32);
25 }
26}
27
28pub fn log<T: AsRef<str>>(message: T) {
30 let msg = message.as_ref();
31 let cstr = std::ffi::CString::new(msg).unwrap();
32 let bytes = cstr.as_bytes_with_nul();
33
34 unsafe {
35 ffi::log(bytes.as_ptr() as _, bytes.len() as _);
36 }
37}