Skip to content

Commit 4654b98

Browse files
committed
descriptor: stop using TranslatePk in segwitv0.rs
1 parent 9c91586 commit 4654b98

File tree

1 file changed

+27
-39
lines changed

1 file changed

+27
-39
lines changed

src/descriptor/segwitv0.rs

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::prelude::*;
2222
use crate::util::varint_len;
2323
use crate::{
2424
Error, ForEachKey, FromStrKey, Miniscript, MiniscriptKey, Satisfier, Segwitv0, ToPublicKey,
25-
TranslateErr, TranslatePk, Translator,
25+
TranslateErr, Translator,
2626
};
2727
/// A Segwitv0 wsh descriptor
2828
#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
@@ -128,6 +128,19 @@ impl<Pk: MiniscriptKey> Wsh<Pk> {
128128
varint_len(max_sat_elems) +
129129
max_sat_size)
130130
}
131+
132+
/// Converts the keys in a script from one type to another.
133+
pub fn translate_pk<Q, T, E>(&self, t: &mut T) -> Result<Wsh<Q>, TranslateErr<E>>
134+
where
135+
T: Translator<Pk, Q, E>,
136+
Q: MiniscriptKey,
137+
{
138+
let inner = match self.inner {
139+
WshInner::SortedMulti(ref smv) => WshInner::SortedMulti(smv.translate_pk(t)?),
140+
WshInner::Ms(ref ms) => WshInner::Ms(ms.translate_pk(t)?),
141+
};
142+
Ok(Wsh { inner })
143+
}
131144
}
132145

133146
impl<Pk: MiniscriptKey + ToPublicKey> Wsh<Pk> {
@@ -291,25 +304,6 @@ impl<Pk: MiniscriptKey> ForEachKey<Pk> for Wsh<Pk> {
291304
}
292305
}
293306

294-
impl<P, Q> TranslatePk<P, Q> for Wsh<P>
295-
where
296-
P: MiniscriptKey,
297-
Q: MiniscriptKey,
298-
{
299-
type Output = Wsh<Q>;
300-
301-
fn translate_pk<T, E>(&self, t: &mut T) -> Result<Self::Output, TranslateErr<E>>
302-
where
303-
T: Translator<P, Q, E>,
304-
{
305-
let inner = match self.inner {
306-
WshInner::SortedMulti(ref smv) => WshInner::SortedMulti(smv.translate_pk(t)?),
307-
WshInner::Ms(ref ms) => WshInner::Ms(ms.translate_pk(t)?),
308-
};
309-
Ok(Wsh { inner })
310-
}
311-
}
312-
313307
/// A bare Wpkh descriptor at top level
314308
#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
315309
pub struct Wpkh<Pk: MiniscriptKey> {
@@ -370,6 +364,19 @@ impl<Pk: MiniscriptKey> Wpkh<Pk> {
370364
note = "Use max_weight_to_satisfy instead. The method to count bytes was redesigned and the results will differ from max_weight_to_satisfy. For more details check rust-bitcoin/rust-miniscript#476."
371365
)]
372366
pub fn max_satisfaction_weight(&self) -> usize { 4 + 1 + 73 + Segwitv0::pk_len(&self.pk) }
367+
368+
/// Converts the keys in a script from one type to another.
369+
pub fn translate_pk<Q, T, E>(&self, t: &mut T) -> Result<Wpkh<Q>, TranslateErr<E>>
370+
where
371+
T: Translator<Pk, Q, E>,
372+
Q: MiniscriptKey,
373+
{
374+
let res = Wpkh::new(t.pk(&self.pk)?);
375+
match res {
376+
Ok(pk) => Ok(pk),
377+
Err(e) => Err(TranslateErr::OuterError(Error::from(e))),
378+
}
379+
}
373380
}
374381

375382
impl<Pk: MiniscriptKey + ToPublicKey> Wpkh<Pk> {
@@ -509,22 +516,3 @@ impl<Pk: FromStrKey> core::str::FromStr for Wpkh<Pk> {
509516
impl<Pk: MiniscriptKey> ForEachKey<Pk> for Wpkh<Pk> {
510517
fn for_each_key<'a, F: FnMut(&'a Pk) -> bool>(&'a self, mut pred: F) -> bool { pred(&self.pk) }
511518
}
512-
513-
impl<P, Q> TranslatePk<P, Q> for Wpkh<P>
514-
where
515-
P: MiniscriptKey,
516-
Q: MiniscriptKey,
517-
{
518-
type Output = Wpkh<Q>;
519-
520-
fn translate_pk<T, E>(&self, t: &mut T) -> Result<Self::Output, TranslateErr<E>>
521-
where
522-
T: Translator<P, Q, E>,
523-
{
524-
let res = Wpkh::new(t.pk(&self.pk)?);
525-
match res {
526-
Ok(pk) => Ok(pk),
527-
Err(e) => Err(TranslateErr::OuterError(Error::from(e))),
528-
}
529-
}
530-
}

0 commit comments

Comments
 (0)