pub trait Error: Error {
    // Required methods
    fn module_name(&self) -> &str;
    fn code(&self) -> u32;

    // Provided method
    fn to_execution_result(&self) -> ExecutionResult { ... }
}
Expand description

A contract error that gets propagated to the caller.

It extends std::error::Error with module name and error code so that errors can be easily serialized and transferred between different processes.

This trait can be derived:

#[derive(Clone, Debug, Error, thiserror::Error)]
#[sdk_error(autonumber)]
enum Error {
   #[error("invalid argument")]
   InvalidArgument,          // autonumbered to 0

   #[error("forbidden")]
   #[sdk_error(code = 401)]  // manually numbered to 403 (`code` or autonumbering is required)
   Forbidden,
}

Required Methods§

source

fn module_name(&self) -> &str

Name of the module that emitted the error.

source

fn code(&self) -> u32

Error code uniquely identifying the error.

Provided Methods§

source

fn to_execution_result(&self) -> ExecutionResult

Converts the error into an execution result.

Implementations on Foreign Types§

source§

impl Error for Infallible

source§

fn module_name(&self) -> &str

source§

fn code(&self) -> u32

Implementors§