lx 0.4.0

A no_std crate to use Linux system calls
Documentation
use core::fmt;

use crate::{
    syscalls::write,
    AsRawFd,
    RawFd,
};

/// This is an implementation detail and should not be used directly.
#[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)*);
    }}
}