1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, VmdkError>;
4
5#[derive(Debug, Error)]
7pub enum VmdkError {
8 #[error("I/O error: {0}")]
9 Io(#[from] std::io::Error),
10 #[error("not a VMware VMDK file: bad magic number")]
11 BadMagic,
12 #[error("unsupported VMDK version: {0}")]
13 UnsupportedVersion(u32),
14 #[error("compressed VMDKs are not supported")]
15 CompressedNotSupported,
16 #[error("VMDK file too small")]
17 FileTooSmall,
18 #[error("geometry field `{field}` overflowed")]
20 GeometryOverflow { field: &'static str },
21 #[error("geometry field `{field}` = {value} is invalid: {reason}")]
23 FieldOutOfRange {
24 field: &'static str,
26 value: u64,
28 reason: &'static str,
30 },
31 #[error("malformed descriptor: {0}")]
33 MalformedDescriptor(&'static str),
34 #[error("unsupported VMDK disk type: {0}")]
35 UnsupportedDiskType(String),
36}