1#[derive(Debug, thiserror::Error)]
5#[non_exhaustive]
6pub enum SaveError {
7 #[error("invalid block magic at offset {offset:#x}: expected 0xFEEDA1E5, found {found:#010x}")]
9 InvalidMagic { offset: usize, found: u32 },
10
11 #[error("LZ4 decompression failed at offset {offset:#x}: {message}")]
13 DecompressionFailed { offset: usize, message: String },
14
15 #[error("unexpected EOF at offset {offset:#x}: needed {expected} more bytes")]
17 UnexpectedEof { offset: usize, expected: usize },
18
19 #[error(
21 "block at offset {offset:#x} declares decompressed size {declared}, exceeds max 0x80000"
22 )]
23 ChunkTooLarge { offset: usize, declared: u32 },
24
25 #[error("invalid metadata file length: {length} bytes")]
27 InvalidMetaLength { length: usize },
28
29 #[error("metadata decryption failed: magic sentinel not found")]
31 MetaDecryptionFailed,
32
33 #[error("unsupported metadata format version: {version:#x}")]
35 UnsupportedMetaFormat { version: u32 },
36
37 #[error("SHA-256 mismatch")]
39 Sha256Mismatch {
40 expected: [u8; 32],
41 actual: [u8; 32],
42 },
43
44 #[error("mapping parse error: {message}")]
46 MappingParseError { message: String },
47
48 #[error("JSON parse error: {message}")]
50 JsonParseError { message: String },
51
52 #[error("I/O error: {0}")]
54 Io(#[from] std::io::Error),
55}