gmsol_solana_utils/
error.rs

1/// Error type.
2#[derive(Debug, thiserror::Error)]
3pub enum Error {
4    /// Parse url error.
5    #[error("parse url: {0}")]
6    ParseUrl(#[from] url::ParseError),
7    /// Parse cluster error.
8    #[error("parse cluster: {0}")]
9    ParseCluster(&'static str),
10    /// Merge transaction error.
11    #[error("merge transaction: {0}")]
12    MergeTransaction(&'static str),
13    /// Add transaction error.
14    #[error("add transaction: {0}")]
15    AddTransaction(&'static str),
16    /// Compile message error.
17    #[error("compile message: {0}")]
18    CompileMessage(#[from] solana_sdk::message::CompileError),
19    /// Client error.
20    #[cfg(feature = "solana-client")]
21    #[error("client: {0}")]
22    Client(#[from] Box<solana_client::client_error::ClientError>),
23    /// Signer error.
24    #[error("signer: {0}")]
25    Signer(#[from] solana_sdk::signer::SignerError),
26    /// Custom error.
27    #[error("custom: {0}")]
28    Custom(String),
29}
30
31impl<T> From<(T, Error)> for Error {
32    fn from(value: (T, crate::Error)) -> Self {
33        value.1
34    }
35}
36
37impl Error {
38    /// Create a custom error.
39    pub fn custom(msg: impl ToString) -> Self {
40        Self::Custom(msg.to_string())
41    }
42}