@@ -78,8 +78,12 @@ impl Descriptor {
7878 fingerprint : String ,
7979 keychain_kind : KeychainKind ,
8080 network : Network ,
81- ) -> Self {
82- let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . unwrap ( ) ;
81+ ) -> Result < Self , DescriptorError > {
82+ let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . map_err ( |error| {
83+ DescriptorError :: Bip32 {
84+ error_message : error. to_string ( ) ,
85+ }
86+ } ) ?;
8387 let derivable_key = & public_key. 0 ;
8488
8589 match derivable_key {
@@ -91,12 +95,12 @@ impl Descriptor {
9195 let ( extended_descriptor, key_map, _) =
9296 Bip44Public ( derivable_key, fingerprint, keychain_kind)
9397 . build ( network)
94- . unwrap ( ) ;
98+ . map_err ( DescriptorError :: from ) ? ;
9599
96- Self {
100+ Ok ( Self {
97101 extended_descriptor,
98102 key_map,
99- }
103+ } )
100104 }
101105 BdkDescriptorPublicKey :: MultiXPub ( _) => {
102106 unreachable ! ( )
@@ -139,8 +143,12 @@ impl Descriptor {
139143 fingerprint : String ,
140144 keychain_kind : KeychainKind ,
141145 network : Network ,
142- ) -> Self {
143- let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . unwrap ( ) ;
146+ ) -> Result < Self , DescriptorError > {
147+ let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . map_err ( |error| {
148+ DescriptorError :: Bip32 {
149+ error_message : error. to_string ( ) ,
150+ }
151+ } ) ?;
144152 let derivable_key = & public_key. 0 ;
145153
146154 match derivable_key {
@@ -152,12 +160,12 @@ impl Descriptor {
152160 let ( extended_descriptor, key_map, _) =
153161 Bip49Public ( derivable_key, fingerprint, keychain_kind)
154162 . build ( network)
155- . unwrap ( ) ;
163+ . map_err ( DescriptorError :: from ) ? ;
156164
157- Self {
165+ Ok ( Self {
158166 extended_descriptor,
159167 key_map,
160- }
168+ } )
161169 }
162170 BdkDescriptorPublicKey :: MultiXPub ( _) => {
163171 unreachable ! ( )
@@ -200,8 +208,12 @@ impl Descriptor {
200208 fingerprint : String ,
201209 keychain_kind : KeychainKind ,
202210 network : Network ,
203- ) -> Self {
204- let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . unwrap ( ) ;
211+ ) -> Result < Self , DescriptorError > {
212+ let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . map_err ( |error| {
213+ DescriptorError :: Bip32 {
214+ error_message : error. to_string ( ) ,
215+ }
216+ } ) ?;
205217 let derivable_key = & public_key. 0 ;
206218
207219 match derivable_key {
@@ -213,12 +225,12 @@ impl Descriptor {
213225 let ( extended_descriptor, key_map, _) =
214226 Bip84Public ( derivable_key, fingerprint, keychain_kind)
215227 . build ( network)
216- . unwrap ( ) ;
228+ . map_err ( DescriptorError :: from ) ? ;
217229
218- Self {
230+ Ok ( Self {
219231 extended_descriptor,
220232 key_map,
221- }
233+ } )
222234 }
223235 BdkDescriptorPublicKey :: MultiXPub ( _) => {
224236 unreachable ! ( )
@@ -261,8 +273,12 @@ impl Descriptor {
261273 fingerprint : String ,
262274 keychain_kind : KeychainKind ,
263275 network : Network ,
264- ) -> Self {
265- let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . unwrap ( ) ;
276+ ) -> Result < Self , DescriptorError > {
277+ let fingerprint = Fingerprint :: from_str ( fingerprint. as_str ( ) ) . map_err ( |error| {
278+ DescriptorError :: Bip32 {
279+ error_message : error. to_string ( ) ,
280+ }
281+ } ) ?;
266282 let derivable_key = & public_key. 0 ;
267283
268284 match derivable_key {
@@ -274,12 +290,12 @@ impl Descriptor {
274290 let ( extended_descriptor, key_map, _) =
275291 Bip86Public ( derivable_key, fingerprint, keychain_kind)
276292 . build ( network)
277- . unwrap ( ) ;
293+ . map_err ( DescriptorError :: from ) ? ;
278294
279- Self {
295+ Ok ( Self {
280296 extended_descriptor,
281297 key_map,
282- }
298+ } )
283299 }
284300 BdkDescriptorPublicKey :: MultiXPub ( _) => {
285301 unreachable ! ( )
0 commit comments