@@ -25,7 +25,7 @@ use crate::prelude::*;
25
25
use crate :: util:: { varint_len, witness_to_scriptsig} ;
26
26
use crate :: {
27
27
push_opcode_size, Error , ForEachKey , FromStrKey , Legacy , Miniscript , MiniscriptKey , Satisfier ,
28
- Segwitv0 , ToPublicKey , TranslateErr , TranslatePk , Translator ,
28
+ Segwitv0 , ToPublicKey , TranslateErr , Translator ,
29
29
} ;
30
30
31
31
/// A Legacy p2sh Descriptor
@@ -259,6 +259,21 @@ impl<Pk: MiniscriptKey> Sh<Pk> {
259
259
}
260
260
} )
261
261
}
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
+ }
262
277
}
263
278
264
279
impl < Pk : MiniscriptKey + ToPublicKey > Sh < Pk > {
@@ -444,24 +459,3 @@ impl<Pk: MiniscriptKey> ForEachKey<Pk> for Sh<Pk> {
444
459
}
445
460
}
446
461
}
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