use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum InvalidRihsFormat {
#[error("String does not start with 'RIHS'")]
MissingPrefix,
#[error("Expected format RIHS<version>_<hash>")]
InvalidStructure,
#[error("Could not extract version from RIHS string")]
VersionExtractionFailed,
#[error("Invalid version number: {version_str}")]
InvalidVersionNumber {
version_str: String,
},
}
#[derive(Debug, Error)]
pub enum TypeDescriptionError {
#[error("Missing required field: {field_name}")]
MissingField {
field_name: String,
},
#[error("Invalid value for field '{field_name}': {reason}")]
InvalidFieldValue {
field_name: String,
reason: String,
},
}
#[derive(Debug, Error)]
pub enum Error {
#[error(transparent)]
JsonError(#[from] serde_json::Error),
#[error(transparent)]
InvalidRihsFormat(#[from] InvalidRihsFormat),
#[error(transparent)]
TypeDescriptionError(#[from] TypeDescriptionError),
#[error("CDR serialization error: {0}")]
CdrError(String),
}