
Photo by
momo_blue
【完全保存版】Openbrush でのカスタムエラーの実装方法について
本日は、OpenBrushで作ったコントラクトにカスタムエラーを追加する方法を記載します。
結論としては、このようになります。
・実装部分
#[derive(Debug, PartialEq, Eq, scale::Encode, scale::Decode)]
#[cfg_attr(feature = "std", derive(scale_info::TypeInfo))]
pub enum ContractError {
NotEnoughMoney,
}
・使用部分
Err(ContractError::NotEnoughMoney.into())
1 #[derive()]について
これは、()の中のトレイトを自動的に、実装しています。

つまり、「Debug」、「PartialEq」などを実装しています。
2 #[cfg_attr( , )]について
「cft_attr」は「condition(条件)」と「attribute(属性)」の二つの引数を持ちます。

つまり、「feature = "std"」という条件の時、「scale_info::TypeInfo」を実装します。
3 カスタムエラーについて
カスタムエラーの部分の実装はこの部分です。
「ContractError」が宣言され、エラータイプは「NotEnoughtMoney」です。

4 Errバリアントについて
使用時には、このように、Result型のエラーバリアント(Err)でラップします。

5 into()メソッドについて
into()メソッドはある型から別の型に変換する際に使われます。
今回は型が変わらないので、なくてもエラーにはなりません。

いいなと思ったら応援しよう!
