1use std::result;
2
3use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum ParseError {
8 #[error("XML parsing failed: {0}")]
10 XmlError(String),
11
12 #[error("JSON parsing failed: {0}")]
14 JsonError(#[from] serde_json::Error),
15
16 #[error("Article not found: PMID {pmid}")]
18 ArticleNotFound { pmid: String },
19
20 #[error("PMC full text not available for {id}")]
22 PmcNotAvailable { id: String },
23
24 #[error("Invalid PMID format: {pmid}")]
26 InvalidPmid { pmid: String },
27
28 #[error("Invalid PMC ID format: {pmcid}")]
30 InvalidPmcid { pmcid: String },
31
32 #[error("IO error: {message}")]
34 IoError { message: String },
35}
36
37pub type Result<T> = result::Result<T, ParseError>;