embedded_runtime/
error.rs

1//! A runtime related error type
2
3use core::fmt::{self, Display, Formatter};
4
5/// Creates a new error
6#[macro_export]
7macro_rules! err {
8    ($message:expr) => {{
9        $crate::error::Error { message: $message, location: (file!(), line!()) }
10    }};
11}
12
13/// An error
14///
15/// # Note
16/// This type should be constructed using the `error`-macro
17#[derive(Debug, Clone, Copy)]
18pub struct Error {
19    /// The error message
20    #[doc(hidden)]
21    pub message: &'static str,
22    /// The error location (file, line)
23    #[doc(hidden)]
24    pub location: (&'static str, u32),
25}
26impl Display for Error {
27    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
28        let (file, line) = self.location;
29        write!(f, "{} at {}:{}", self.message, file, line)
30    }
31}