use crate::collection::ShortStrU8;
use core::panic::Location;
#[derive(Debug)]
pub struct ErrorInfo<E> {
pub column: u16,
pub error: E,
pub file: ShortStrU8<'static>,
pub line: u16,
}
impl<E> ErrorInfo<E> {
#[inline]
#[track_caller]
pub fn from_error(error: E) -> Self {
let location = Location::caller();
let column = if cfg!(feature = "error-loc") {
location.column().try_into().unwrap_or(u16::MAX)
} else {
0
};
let file =
if cfg!(feature = "error-loc") { location.file().into() } else { ShortStrU8::default() };
let line =
if cfg!(feature = "error-loc") { location.line().try_into().unwrap_or(u16::MAX) } else { 0 };
Self { column, error, file, line }
}
}