見出し画像

【完全保存版】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()メソッドはある型から別の型に変換する際に使われます。

今回は型が変わらないので、なくてもエラーにはなりません。

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

ユウキ
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊