polymesh_api_ink/
error.rs

1use alloc::{format, string::String};
2
3use codec::{Decode, Encode};
4
5#[derive(Debug, Encode, Decode)]
6#[cfg_attr(feature = "std", derive(scale_info::TypeInfo))]
7pub enum Error {
8  ParityScaleCodec(String),
9  Generic { status_code: u32 },
10  ExtrinsicCallFailed { error_msg: String },
11}
12
13impl From<codec::Error> for Error {
14  fn from(err: codec::Error) -> Self {
15    Self::ParityScaleCodec(format!("{err:?}"))
16  }
17}
18
19impl ink::env::chain_extension::FromStatusCode for Error {
20  fn from_status_code(status_code: u32) -> Result<(), Self> {
21    match status_code {
22      0 => Ok(()),
23      _ => Err(Self::Generic { status_code }),
24    }
25  }
26}
27
28pub type Result<T, E = Error> = core::result::Result<T, E>;