@@ -13,6 +13,57 @@ use crate::key::error::{
13
13
} ;
14
14
use crate :: { schnorr, MessageLengthError } ;
15
15
16
+ /// Implements `From<E> for $error` for all the specific errors in this crate.
17
+ ///
18
+ /// Requires `$error` to be a an enum with a variant `Secp256k1`.
19
+ #[ macro_export]
20
+ macro_rules! impl_from_for_all_crate_errors_for {
21
+ ( $error: ty) => {
22
+ $crate:: impl_from_for_all_crate_errors_for!( $error, Secp256k1 ) ;
23
+ } ;
24
+ ( $error: ty, $variant: ident) => {
25
+ impl From <$crate:: Error > for $error {
26
+ fn from( e: $crate:: Error ) -> Self { Self :: $variant( e. into( ) ) }
27
+ }
28
+ impl From <$crate:: NotEnoughMemoryError > for $error {
29
+ fn from( e: $crate:: NotEnoughMemoryError ) -> Self { Self :: $variant( e. into( ) ) }
30
+ }
31
+ impl From <$crate:: MessageLengthError > for $error {
32
+ fn from( e: $crate:: MessageLengthError ) -> Self { Self :: $variant( e. into( ) ) }
33
+ }
34
+ impl From <$crate:: schnorr:: SignatureError > for $error {
35
+ fn from( e: $crate:: schnorr:: SignatureError ) -> Self { Self :: $variant( e. into( ) ) }
36
+ }
37
+ impl From <$crate:: ecdsa:: SignatureError > for $error {
38
+ fn from( e: $crate:: ecdsa:: SignatureError ) -> Self { Self :: $variant( e. into( ) ) }
39
+ }
40
+ impl From <$crate:: RecoveryIdError > for $error {
41
+ fn from( e: $crate:: RecoveryIdError ) -> Self { Self :: $variant( e. into( ) ) }
42
+ }
43
+ impl From <$crate:: SecretKeyError > for $error {
44
+ fn from( e: $crate:: SecretKeyError ) -> Self { Self :: $variant( e. into( ) ) }
45
+ }
46
+ impl From <$crate:: PublicKeyError > for $error {
47
+ fn from( e: $crate:: PublicKeyError ) -> Self { Self :: $variant( e. into( ) ) }
48
+ }
49
+ impl From <$crate:: PublicKeySumError > for $error {
50
+ fn from( e: $crate:: PublicKeySumError ) -> Self { Self :: $variant( e. into( ) ) }
51
+ }
52
+ impl From <$crate:: TweakError > for $error {
53
+ fn from( e: $crate:: TweakError ) -> Self { Self :: $variant( e. into( ) ) }
54
+ }
55
+ impl From <$crate:: ParityValueError > for $error {
56
+ fn from( e: $crate:: ParityValueError ) -> Self { Self :: $variant( e. into( ) ) }
57
+ }
58
+ impl From <$crate:: XOnlyTweakError > for $error {
59
+ fn from( e: $crate:: XOnlyTweakError ) -> Self { Self :: $variant( e. into( ) ) }
60
+ }
61
+ impl From <$crate:: SharedSecretError > for $error {
62
+ fn from( e: $crate:: SharedSecretError ) -> Self { Self :: $variant( e. into( ) ) }
63
+ }
64
+ } ;
65
+ }
66
+
16
67
/// This is a general purpose error type that can be used to wrap all the errors in this crate.
17
68
///
18
69
/// Every error types in this crate can be converted (using `?`) to this type. We also support
0 commit comments