Skip to main content

plex_boot/
error.rs

1//! Application-wide error types.
2//!
3//! Centralized error definitions for handling various failure conditions
4//! such as UEFI errors, file system errors, and invalid configurations.
5
6#[derive(Debug, thiserror_no_std::Error)]
7/// The primary error type for the application.
8pub enum AppError {
9    #[error(transparent)]
10    Uefi(#[from] uefi::Error),
11    #[error(transparent)]
12    UefiFs(#[from] uefi::fs::Error),
13    #[error(transparent)]
14    FromStrError(#[from] uefi::data_types::FromStrError),
15    #[cfg(feature = "iso")]
16    #[error(transparent)]
17    Iso(#[from] iso9660::ISOError<iso9660::io::ErrorKind>),
18    #[cfg(feature = "iso")]
19    #[error(transparent)]
20    IsoIo(#[from] iso9660::io::ErrorKind),
21    #[error(transparent)]
22    PathRef(#[from] crate::path::PathRefParseError),
23    #[error(transparent)]
24    Builder(#[from] uefi::proto::device_path::build::BuildError),
25    #[error(transparent)]
26    Path(#[from] uefi::proto::device_path::DevicePathUtilitiesError),
27    #[error("Error: {0}")]
28    Generic(&'static str),
29    #[error("NotImplemented: {0}")]
30    NotImplemented(&'static str),
31}
32
33impl From<uefi::Status> for AppError {
34    fn from(status: uefi::Status) -> Self {
35        AppError::Uefi(uefi::Error::new(status, ()))
36    }
37}