feat(wallet): Add infallible Wallet get_address(), get_internal_address functions
refactor!(wallet)!: rename fallible Wallet try_get_address(), try_get_internal_address functions
This commit is contained in:
parent
9e7d99e3bf
commit
77f9977c02
@ -259,6 +259,29 @@ impl Wallet {
|
||||
}
|
||||
}
|
||||
|
||||
impl<D> Wallet<D>
|
||||
where
|
||||
D: PersistBackend<ChangeSet, WriteError = core::convert::Infallible>,
|
||||
{
|
||||
/// Infallibly return a derived address using the external descriptor, see [`AddressIndex`] for
|
||||
/// available address index selection strategies. If none of the keys in the descriptor are derivable
|
||||
/// (i.e. does not end with /*) then the same address will always be returned for any [`AddressIndex`].
|
||||
pub fn get_address(&mut self, address_index: AddressIndex) -> AddressInfo {
|
||||
self.try_get_address(address_index).unwrap()
|
||||
}
|
||||
|
||||
/// Infallibly return a derived address using the internal (change) descriptor.
|
||||
///
|
||||
/// If the wallet doesn't have an internal descriptor it will use the external descriptor.
|
||||
///
|
||||
/// see [`AddressIndex`] for available address index selection strategies. If none of the keys
|
||||
/// in the descriptor are derivable (i.e. does not end with /*) then the same address will always
|
||||
/// be returned for any [`AddressIndex`].
|
||||
pub fn get_internal_address(&mut self, address_index: AddressIndex) -> AddressInfo {
|
||||
self.try_get_internal_address(address_index).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
/// The error type when constructing a fresh [`Wallet`].
|
||||
///
|
||||
/// Methods [`new`] and [`new_with_genesis_hash`] may return this error.
|
||||
@ -611,27 +634,37 @@ impl<D> Wallet<D> {
|
||||
/// Return a derived address using the external descriptor, see [`AddressIndex`] for
|
||||
/// available address index selection strategies. If none of the keys in the descriptor are derivable
|
||||
/// (i.e. does not end with /*) then the same address will always be returned for any [`AddressIndex`].
|
||||
pub fn get_address(&mut self, address_index: AddressIndex) -> AddressInfo
|
||||
///
|
||||
/// A `PersistBackend<ChangeSet>::WriteError` will result if unable to persist the new address
|
||||
/// to the `PersistBackend`.
|
||||
pub fn try_get_address(
|
||||
&mut self,
|
||||
address_index: AddressIndex,
|
||||
) -> Result<AddressInfo, D::WriteError>
|
||||
where
|
||||
D: PersistBackend<ChangeSet>,
|
||||
{
|
||||
self._get_address(KeychainKind::External, address_index)
|
||||
.expect("persistence backend must not fail")
|
||||
}
|
||||
|
||||
/// Return a derived address using the internal (change) descriptor.
|
||||
///
|
||||
/// If the wallet doesn't have an internal descriptor it will use the external descriptor.
|
||||
///
|
||||
/// A `PersistBackend<ChangeSet>::WriteError` will result if unable to persist the new address
|
||||
/// to the `PersistBackend`.
|
||||
///
|
||||
/// see [`AddressIndex`] for available address index selection strategies. If none of the keys
|
||||
/// in the descriptor are derivable (i.e. does not end with /*) then the same address will always
|
||||
/// be returned for any [`AddressIndex`].
|
||||
pub fn get_internal_address(&mut self, address_index: AddressIndex) -> AddressInfo
|
||||
pub fn try_get_internal_address(
|
||||
&mut self,
|
||||
address_index: AddressIndex,
|
||||
) -> Result<AddressInfo, D::WriteError>
|
||||
where
|
||||
D: PersistBackend<ChangeSet>,
|
||||
{
|
||||
self._get_address(KeychainKind::Internal, address_index)
|
||||
.expect("persistence backend must not fail")
|
||||
}
|
||||
|
||||
/// Return a derived address using the specified `keychain` (external/internal).
|
||||
|
@ -29,7 +29,7 @@ fn main() -> Result<(), anyhow::Error> {
|
||||
Network::Testnet,
|
||||
)?;
|
||||
|
||||
let address = wallet.get_address(bdk::wallet::AddressIndex::New);
|
||||
let address = wallet.try_get_address(bdk::wallet::AddressIndex::New)?;
|
||||
println!("Generated Address: {}", address);
|
||||
|
||||
let balance = wallet.get_balance();
|
||||
|
@ -27,7 +27,7 @@ async fn main() -> Result<(), anyhow::Error> {
|
||||
Network::Testnet,
|
||||
)?;
|
||||
|
||||
let address = wallet.get_address(AddressIndex::New);
|
||||
let address = wallet.try_get_address(AddressIndex::New)?;
|
||||
println!("Generated Address: {}", address);
|
||||
|
||||
let balance = wallet.get_balance();
|
||||
|
@ -26,7 +26,7 @@ fn main() -> Result<(), anyhow::Error> {
|
||||
Network::Testnet,
|
||||
)?;
|
||||
|
||||
let address = wallet.get_address(AddressIndex::New);
|
||||
let address = wallet.try_get_address(AddressIndex::New)?;
|
||||
println!("Generated Address: {}", address);
|
||||
|
||||
let balance = wallet.get_balance();
|
||||
|
Loading…
x
Reference in New Issue
Block a user