file_system/mbr/
error.rs

1pub type Result<T> = core::result::Result<T, Error>;
2
3#[derive(Debug, PartialEq, Clone, Copy, Eq)]
4pub enum Error {
5    Device(crate::Error),
6    InvalidPartition,
7    InvalidSignature,
8    DeviceTooSmall,
9    BufferTooSmall,
10    NoValidPartitions,
11    InvalidIndex,
12    OverlappingPartitions,
13    MultipleBootablePartitions,
14    WriteFailed,
15    ReadFailed,
16    Full,
17}
18
19impl core::error::Error for Error {}
20
21impl core::fmt::Display for Error {
22    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23        match self {
24            Error::Device(e) => write!(f, "Device error: {}", e),
25            Error::InvalidPartition => write!(f, "Invalid partition"),
26            Error::InvalidSignature => write!(f, "Invalid MBR signature"),
27            Error::DeviceTooSmall => write!(f, "Device is too small for MBR"),
28            Error::BufferTooSmall => write!(f, "Provided buffer is too small"),
29            Error::NoValidPartitions => write!(f, "No valid partitions found"),
30            Error::InvalidIndex => write!(f, "Invalid partition index"),
31            Error::OverlappingPartitions => write!(f, "Partitions are overlapping"),
32            Error::MultipleBootablePartitions => write!(f, "Multiple bootable partitions found"),
33            Error::WriteFailed => write!(f, "Failed to write data"),
34            Error::ReadFailed => write!(f, "Failed to read data"),
35            Error::Full => write!(f, "No free partition slots available"),
36        }
37    }
38}
39
40impl From<crate::Error> for Error {
41    fn from(value: crate::Error) -> Self {
42        Error::Device(value)
43    }
44}