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}