Allow easy concatenation of bip32 derivation paths

Currently one has to convert the path into a Vec<ChildNumber>, extend it and finally convert it back again.
This commit is contained in:
Sebastian Geisler 2020-08-19 16:08:09 +02:00 committed by Sebastian Geisler
parent e8bcde4d38
commit 202a946fc3
1 changed files with 22 additions and 0 deletions

View File

@ -326,6 +326,28 @@ impl DerivationPath {
pub fn hardened_children(&self) -> DerivationPathIterator {
DerivationPathIterator::start_from(&self, ChildNumber::Hardened{ index: 0 })
}
/// Concatenate `self` with `path` and return the resulting new path.
///
/// ```
/// use bitcoin::util::bip32::{DerivationPath, ChildNumber};
/// use std::str::FromStr;
///
/// let base = DerivationPath::from_str("m/42").unwrap();
///
/// let deriv_1 = base.extend(DerivationPath::from_str("m/0/1").unwrap());
/// let deriv_2 = base.extend(&[
/// ChildNumber::from_normal_idx(0).unwrap(),
/// ChildNumber::from_normal_idx(1).unwrap()
/// ]);
///
/// assert_eq!(deriv_1, deriv_2);
/// ```
pub fn extend<T: AsRef<[ChildNumber]>>(&self, path: T) -> DerivationPath {
let mut new_path = self.clone();
new_path.0.extend_from_slice(path.as_ref());
new_path
}
}
impl fmt::Display for DerivationPath {