@@ -227,7 +227,7 @@ where
227
227
D : BatchDatabase ,
228
228
{
229
229
// Return a newly derived address using the external descriptor
230
- fn get_new_address ( & self ) -> Result < ( Address , u32 ) , Error > {
230
+ fn get_new_address ( & self ) -> Result < AddressInfo , Error > {
231
231
let incremented_index = self . fetch_and_increment_index ( KeychainKind :: External ) ?;
232
232
233
233
let address_result = self
@@ -236,13 +236,16 @@ where
236
236
. address ( self . network ) ;
237
237
238
238
address_result
239
- . map ( |address| ( address, incremented_index) )
239
+ . map ( |address| AddressInfo {
240
+ address,
241
+ index : incremented_index,
242
+ } )
240
243
. map_err ( |_| Error :: ScriptDoesntHaveAddressForm )
241
244
}
242
245
243
246
// Return the the last previously derived address if it has not been used in a received
244
247
// transaction. Otherwise return a new address using [`Wallet::get_new_address`].
245
- fn get_unused_address ( & self ) -> Result < ( Address , u32 ) , Error > {
248
+ fn get_unused_address ( & self ) -> Result < AddressInfo , Error > {
246
249
let current_index = self . fetch_index ( KeychainKind :: External ) ?;
247
250
248
251
let derived_key = self . descriptor . as_derived ( current_index, & self . secp ) ;
@@ -261,44 +264,45 @@ where
261
264
} else {
262
265
derived_key
263
266
. address ( self . network )
264
- . map ( |address| ( address, current_index) )
267
+ . map ( |address| AddressInfo {
268
+ address,
269
+ index : current_index,
270
+ } )
265
271
. map_err ( |_| Error :: ScriptDoesntHaveAddressForm )
266
272
}
267
273
}
268
274
269
275
// Return derived address for the external descriptor at a specific index
270
- fn peek_address ( & self , index : u32 ) -> Result < ( Address , u32 ) , Error > {
276
+ fn peek_address ( & self , index : u32 ) -> Result < AddressInfo , Error > {
271
277
self . descriptor
272
278
. as_derived ( index, & self . secp )
273
279
. address ( self . network )
274
- . map ( |address| ( address, index) )
280
+ . map ( |address| AddressInfo { address, index } )
275
281
. map_err ( |_| Error :: ScriptDoesntHaveAddressForm )
276
282
}
277
283
278
284
// Return derived address for the external descriptor at a specific index and reset current
279
285
// address index
280
- fn reset_address ( & self , index : u32 ) -> Result < ( Address , u32 ) , Error > {
286
+ fn reset_address ( & self , index : u32 ) -> Result < AddressInfo , Error > {
281
287
self . set_index ( KeychainKind :: External , index) ?;
282
288
283
289
self . descriptor
284
290
. as_derived ( index, & self . secp )
285
291
. address ( self . network )
286
- . map ( |address| ( address, index) )
292
+ . map ( |address| AddressInfo { address, index } )
287
293
. map_err ( |_| Error :: ScriptDoesntHaveAddressForm )
288
294
}
289
295
290
296
/// Return a derived address using the external descriptor, see [`AddressIndex`] for
291
297
/// available address index selection strategies. If none of the keys in the descriptor are derivable
292
298
/// (ie. does not end with /*) then the same address will always be returned for any [`AddressIndex`].
293
299
pub fn get_address ( & self , address_index : AddressIndex ) -> Result < AddressInfo , Error > {
294
- let result = match address_index {
300
+ match address_index {
295
301
AddressIndex :: New => self . get_new_address ( ) ,
296
302
AddressIndex :: LastUnused => self . get_unused_address ( ) ,
297
303
AddressIndex :: Peek ( index) => self . peek_address ( index) ,
298
304
AddressIndex :: Reset ( index) => self . reset_address ( index) ,
299
- } ;
300
-
301
- result. map ( |( address, index) | AddressInfo { index, address } )
305
+ }
302
306
}
303
307
304
308
/// Return whether or not a `script` is part of this wallet (either internal or external)
0 commit comments