1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Debug, Error)]
10pub enum InvalidRihsFormat {
11 #[error("String does not start with 'RIHS'")]
13 MissingPrefix,
14
15 #[error("Expected format RIHS<version>_<hash>")]
17 InvalidStructure,
18
19 #[error("Could not extract version from RIHS string")]
21 VersionExtractionFailed,
22
23 #[error("Invalid version number: {version_str}")]
25 InvalidVersionNumber {
26 version_str: String,
28 },
29}
30
31#[derive(Debug, Error)]
33pub enum TypeDescriptionError {
34 #[error("Missing required field: {field_name}")]
36 MissingField {
37 field_name: String,
39 },
40
41 #[error("Invalid value for field '{field_name}': {reason}")]
43 InvalidFieldValue {
44 field_name: String,
46 reason: String,
48 },
49}
50
51#[derive(Debug, Error)]
53pub enum Error {
54 #[error(transparent)]
56 JsonError(#[from] serde_json::Error),
57
58 #[error(transparent)]
60 InvalidRihsFormat(#[from] InvalidRihsFormat),
61
62 #[error(transparent)]
64 TypeDescriptionError(#[from] TypeDescriptionError),
65
66 #[error("CDR serialization error: {0}")]
68 CdrError(String),
69}