@@ -25,7 +25,7 @@ use crate::prelude::*;
2525use crate :: util:: { varint_len, witness_to_scriptsig} ;
2626use crate :: {
2727 push_opcode_size, Error , ForEachKey , FromStrKey , Legacy , Miniscript , MiniscriptKey , Satisfier ,
28- Segwitv0 , ToPublicKey , TranslateErr , TranslatePk , Translator ,
28+ Segwitv0 , ToPublicKey , TranslateErr , Translator ,
2929} ;
3030
3131/// A Legacy p2sh Descriptor
@@ -259,6 +259,21 @@ impl<Pk: MiniscriptKey> Sh<Pk> {
259259 }
260260 } )
261261 }
262+
263+ /// Converts the keys in a script from one type to another.
264+ pub fn translate_pk < Q , T , E > ( & self , t : & mut T ) -> Result < Sh < Q > , TranslateErr < E > >
265+ where
266+ T : Translator < Pk , Q , E > ,
267+ Q : MiniscriptKey ,
268+ {
269+ let inner = match self . inner {
270+ ShInner :: Wsh ( ref wsh) => ShInner :: Wsh ( wsh. translate_pk ( t) ?) ,
271+ ShInner :: Wpkh ( ref wpkh) => ShInner :: Wpkh ( wpkh. translate_pk ( t) ?) ,
272+ ShInner :: SortedMulti ( ref smv) => ShInner :: SortedMulti ( smv. translate_pk ( t) ?) ,
273+ ShInner :: Ms ( ref ms) => ShInner :: Ms ( ms. translate_pk ( t) ?) ,
274+ } ;
275+ Ok ( Sh { inner } )
276+ }
262277}
263278
264279impl < Pk : MiniscriptKey + ToPublicKey > Sh < Pk > {
@@ -444,24 +459,3 @@ impl<Pk: MiniscriptKey> ForEachKey<Pk> for Sh<Pk> {
444459 }
445460 }
446461}
447-
448- impl < P , Q > TranslatePk < P , Q > for Sh < P >
449- where
450- P : MiniscriptKey ,
451- Q : MiniscriptKey ,
452- {
453- type Output = Sh < Q > ;
454-
455- fn translate_pk < T , E > ( & self , t : & mut T ) -> Result < Self :: Output , TranslateErr < E > >
456- where
457- T : Translator < P , Q , E > ,
458- {
459- let inner = match self . inner {
460- ShInner :: Wsh ( ref wsh) => ShInner :: Wsh ( wsh. translate_pk ( t) ?) ,
461- ShInner :: Wpkh ( ref wpkh) => ShInner :: Wpkh ( wpkh. translate_pk ( t) ?) ,
462- ShInner :: SortedMulti ( ref smv) => ShInner :: SortedMulti ( smv. translate_pk ( t) ?) ,
463- ShInner :: Ms ( ref ms) => ShInner :: Ms ( ms. translate_pk ( t) ?) ,
464- } ;
465- Ok ( Sh { inner } )
466- }
467- }
0 commit comments