use core::fmt;
use crate::{
syscalls::write,
AsRawFd,
RawFd,
};
#[doc(hidden)]
pub struct PrintFd(pub RawFd);
impl AsRawFd for PrintFd {
fn as_raw_fd(&self) -> RawFd {
self.0.as_raw_fd()
}
}
impl fmt::Write for PrintFd {
fn write_str(&mut self, s: &str) -> fmt::Result {
if write(self, s.as_bytes()).is_err() {
return Err(fmt::Error);
}
Ok(())
}
}
#[macro_export]
macro_rules! println {
($($arg:tt)*) => {{
use ::core::fmt::Write;
let _ = ::core::writeln!($crate::PrintFd(1), $($arg)*);
}}
}
#[macro_export]
macro_rules! eprintln {
($($arg:tt)*) => {{
use ::core::fmt::Write;
let _ = ::core::writeln!($crate::PrintFd(2), $($arg)*);
}}
}