![見出し画像](https://assets.st-note.com/production/uploads/images/108192110/rectangle_large_type_2_de5f1558f8eb97e4ba5699242d203bb2.png?width=800)
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()]について
これは、()の中のトレイトを自動的に、実装しています。
![](https://assets.st-note.com/img/1686710046340-bGpI5Yckcb.png?width=800)
つまり、「Debug」、「PartialEq」などを実装しています。
2 #[cfg_attr( , )]について
「cft_attr」は「condition(条件)」と「attribute(属性)」の二つの引数を持ちます。
![](https://assets.st-note.com/img/1686710225148-xGMNvYqI1n.png?width=800)
つまり、「feature = "std"」という条件の時、「scale_info::TypeInfo」を実装します。
3 カスタムエラーについて
カスタムエラーの部分の実装はこの部分です。
「ContractError」が宣言され、エラータイプは「NotEnoughtMoney」です。
![](https://assets.st-note.com/img/1686710706302-GYn2FKh26B.png?width=800)
4 Errバリアントについて
使用時には、このように、Result型のエラーバリアント(Err)でラップします。
![](https://assets.st-note.com/img/1686711554327-6zhVMKrzAa.png?width=800)
5 into()メソッドについて
into()メソッドはある型から別の型に変換する際に使われます。
今回は型が変わらないので、なくてもエラーにはなりません。
![](https://assets.st-note.com/img/1686711840834-c6LM8H6jhY.png?width=800)
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊