use core::fmt::{self, Write}; pub struct Stdout; impl Write for Stdout { fn write_str(&mut self, s: &str) -> fmt::Result { crate::syscall::io_write(1, s.as_ptr(), s.len()); Ok(()) } } #[doc(hidden)] pub fn _print(args: core::fmt::Arguments) { let mut stdout = crate::io::Stdout; let _ = core::fmt::Write::write_fmt(&mut stdout, args); } #[macro_export] macro_rules! print { ($($arg:tt)*) => ($crate::io::_print(core::format_args!($($arg)*))); } #[macro_export] macro_rules! println { () => ($crate::print!("\n")); ($($arg:tt)*) => { $crate::print!($($arg)*); $crate::print!("\n"); }; }