#[doc(hidden)]
pub type DispatchResult = core::result::Result<(), DispatchError>;
#[derive(Debug, Copy, Clone)]
#[doc(hidden)]
pub enum DispatchError {
UnknownSelector,
UnknownInstantiateSelector,
UnknownCallSelector,
InvalidParameters,
InvalidInstantiateParameters,
InvalidCallParameters,
CouldNotReadInput,
PaidUnpayableMessage,
}
impl DispatchError {
#[inline]
pub fn to_u32(self) -> u32 {
DispatchRetCode::from(self).to_u32()
}
}
#[derive(Copy, Clone)]
#[doc(hidden)]
pub struct DispatchRetCode(u32);
impl DispatchRetCode {
#[inline]
pub fn success() -> Self {
Self(0)
}
#[inline]
pub fn to_u32(self) -> u32 {
self.0
}
}
impl From<DispatchError> for DispatchRetCode {
#[inline]
fn from(err: DispatchError) -> Self {
match err {
DispatchError::UnknownSelector => Self(0x01),
DispatchError::UnknownInstantiateSelector => Self(0x02),
DispatchError::UnknownCallSelector => Self(0x03),
DispatchError::InvalidParameters => Self(0x04),
DispatchError::InvalidInstantiateParameters => Self(0x05),
DispatchError::InvalidCallParameters => Self(0x06),
DispatchError::CouldNotReadInput => Self(0x07),
DispatchError::PaidUnpayableMessage => Self(0x08),
}
}
}
impl From<DispatchResult> for DispatchRetCode {
#[inline]
fn from(res: DispatchResult) -> Self {
match res {
Ok(_) => Self::success(),
Err(err) => Self::from(err),
}
}
}