sv::error attribute
Use the sv::error attribute to specify custom error types for the contract.
💡
Custom error type has to implement From<StdError> for the macro to compile.
You can quickly provide this logic using, for example, thiserror.
Macros
List of macros supporting the sv::error attribute:
💡
The interface macro supports custom error types via the Error associated type.
Usage
use thiserror::Error;
pub struct CounterContract;
#[derive(Error, Debug, PartialEq)]
pub enum ContractError {
#[error("{0}")]
Std(#[from] StdError),
}
#[cfg_attr(feature = "library", sylvia::entry_points)]
#[contract]
#[sv::error(ContractError)]
impl CounterContract {
pub const fn new() -> Self {
Self
}
#[sv::msg(instantiate)]
fn instantiate(&self, ctx: InstantiateCtx) -> Result<Response, ContractError> {
Ok(Response::new())
}
}💡
Each method has to use the error type defined in the
sv::error attribute.