1use thiserror::Error;
6use yf_common::error::YfCommonError;
7
8#[derive(Error, Debug)]
10pub enum YfOptionsError {
11 #[error(transparent)]
13 Common(#[from] YfCommonError),
14
15 #[error("Invalid strike range format: {0}")]
17 StrikeRangeError(String),
18
19 #[error("No options data found for symbol {0}")]
21 NoDataError(String),
22
23 #[error("API returned error: {0}")]
25 ApiError(String),
26
27 #[error("Greeks calculation error: {0}")]
29 #[allow(dead_code)] GreeksError(String),
31}
32
33pub type Result<T> = std::result::Result<T, YfOptionsError>;
34
35impl From<std::io::Error> for YfOptionsError {
37 fn from(err: std::io::Error) -> Self {
38 YfOptionsError::Common(YfCommonError::IoError(err))
39 }
40}
41
42impl From<serde_json::Error> for YfOptionsError {
43 fn from(err: serde_json::Error) -> Self {
44 YfOptionsError::Common(YfCommonError::JsonError(err))
45 }
46}
47
48impl From<reqwest::Error> for YfOptionsError {
49 fn from(err: reqwest::Error) -> Self {
50 YfOptionsError::Common(YfCommonError::RequestError(err))
51 }
52}