bitcoincore_rest/
error.rs1#[derive(Debug)]
3pub enum Error {
4 BitcoinEncodeError(bitcoin::consensus::encode::Error),
5 NotOkError(http::StatusCode),
6 #[cfg(feature = "use-reqwest")]
7 #[cfg_attr(docsrs, doc(cfg(feature = "use-reqwest")))]
8 ReqwestError(reqwest::Error),
9 #[cfg(not(feature = "use-reqwest"))]
10 #[cfg_attr(docsrs, doc(cfg(not(feature = "use-reqwest"))))]
11 CustomError(Box<dyn std::error::Error>),
12}
13
14impl std::fmt::Display for Error {
15 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
16 match *self {
17 Error::BitcoinEncodeError(ref e) => write!(f, "Bitcoin encode error, {e}"),
18 Error::NotOkError(ref e) => write!(f, "Incorrect status code {e}"),
19 #[cfg(feature = "use-reqwest")]
20 #[cfg_attr(docsrs, doc(cfg(feature = "use-reqwest")))]
21 Error::ReqwestError(ref e) => write!(f, "Reqwest error, {e}"),
22 #[cfg(not(feature = "use-reqwest"))]
23 #[cfg_attr(docsrs, doc(cfg(not(feature = "use-reqwest"))))]
24 Error::CustomError(ref e) => write!(f, "Custom error, {}", e),
25 }
26 }
27}
28
29impl std::error::Error for Error {
30 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
31 use self::Error::*;
32
33 match self {
34 BitcoinEncodeError(e) => Some(e),
35 NotOkError(_) => None,
36 #[cfg(feature = "use-reqwest")]
37 #[cfg_attr(docsrs, doc(cfg(feature = "use-reqwest")))]
38 ReqwestError(e) => Some(e),
39 #[cfg(not(feature = "use-reqwest"))]
40 #[cfg_attr(docsrs, doc(cfg(not(feature = "use-reqwest"))))]
41 CustomError(e) => Some(e.as_ref()),
42 }
43 }
44}
45
46#[cfg(feature = "use-reqwest")]
47#[cfg_attr(docsrs, doc(cfg(feature = "use-reqwest")))]
48impl From<reqwest::Error> for Error {
49 fn from(err: reqwest::Error) -> Self {
50 Self::ReqwestError(err)
51 }
52}
53
54impl From<bitcoin::consensus::encode::Error> for Error {
55 fn from(err: bitcoin::consensus::encode::Error) -> Self {
56 Self::BitcoinEncodeError(err)
57 }
58}