30 lines
654 B
Rust
30 lines
654 B
Rust
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");
|
|
};
|
|
} |