Skip to main content

executable/
error.rs

1use core::fmt::Display;
2use internationalization::translate;
3
4pub type Result<T> = core::result::Result<T, Error>;
5
6#[derive(Debug, Clone)]
7pub enum Error {
8    FileSystem(virtual_file_system::Error),
9    Task(task::Error),
10    FailedToGetMainFunction,
11    InvalidStackSize,
12    PermissionDenied,
13}
14
15impl Display for Error {
16    fn fmt(&self, formatter: &mut core::fmt::Formatter) -> core::fmt::Result {
17        match self {
18            Error::FileSystem(error) => write!(formatter, "{error}"),
19            Error::Task(error) => write!(formatter, "{error}"),
20            Error::FailedToGetMainFunction => {
21                write!(formatter, translate!("Failed to get main function"))
22            }
23            Error::InvalidStackSize => write!(formatter, translate!("Invalid stack size")),
24            Error::PermissionDenied => write!(formatter, translate!("Permission denied")),
25        }
26    }
27}
28
29impl From<virtual_file_system::Error> for Error {
30    fn from(error: virtual_file_system::Error) -> Self {
31        Error::FileSystem(error)
32    }
33}
34
35impl From<task::Error> for Error {
36    fn from(error: task::Error) -> Self {
37        Error::Task(error)
38    }
39}