Skip to main content

mig_assembly/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum AssemblyError {
5    #[error(
6        "Unexpected segment '{segment_id}' at position {position}, expected one of: {expected:?}"
7    )]
8    UnexpectedSegment {
9        segment_id: String,
10        position: usize,
11        expected: Vec<String>,
12    },
13
14    #[error("Missing mandatory segment '{segment_id}' for PID {pid}")]
15    MissingMandatory { segment_id: String, pid: String },
16
17    #[error("Unknown PID: {0}")]
18    UnknownPid(String),
19
20    #[error("PID detection failed: could not determine PID from segments")]
21    PidDetectionFailed,
22
23    #[error("Segment cursor out of bounds at position {0}")]
24    CursorOutOfBounds(usize),
25
26    #[error("Parse error: {0}")]
27    ParseError(String),
28
29    #[error("Expected segment '{expected}' not found")]
30    SegmentNotFound { expected: String },
31}
32
33impl From<mig_types::cursor::SegmentNotFound> for AssemblyError {
34    fn from(e: mig_types::cursor::SegmentNotFound) -> Self {
35        AssemblyError::SegmentNotFound {
36            expected: e.expected,
37        }
38    }
39}