@@ -28,7 +28,7 @@ use crate::plan::{AssetProvider, Plan};
2828use crate :: prelude:: * ;
2929use crate :: {
3030 expression, hash256, BareCtx , Error , ForEachKey , FromStrKey , MiniscriptKey , Satisfier ,
31- ToPublicKey , TranslateErr , TranslatePk , Translator ,
31+ ToPublicKey , TranslateErr , Translator ,
3232} ;
3333
3434mod bare;
@@ -359,6 +359,23 @@ impl<Pk: MiniscriptKey> Descriptor<Pk> {
359359 } ;
360360 Ok ( weight)
361361 }
362+
363+ /// Converts a descriptor using one kind of keys to another kind of key.
364+ pub fn translate_pk < T , Q , E > ( & self , t : & mut T ) -> Result < Descriptor < Q > , TranslateErr < E > >
365+ where
366+ T : Translator < Pk , Q , E > ,
367+ Q : MiniscriptKey ,
368+ {
369+ let desc = match * self {
370+ Descriptor :: Bare ( ref bare) => Descriptor :: Bare ( bare. translate_pk ( t) ?) ,
371+ Descriptor :: Pkh ( ref pk) => Descriptor :: Pkh ( pk. translate_pk ( t) ?) ,
372+ Descriptor :: Wpkh ( ref pk) => Descriptor :: Wpkh ( pk. translate_pk ( t) ?) ,
373+ Descriptor :: Sh ( ref sh) => Descriptor :: Sh ( sh. translate_pk ( t) ?) ,
374+ Descriptor :: Wsh ( ref wsh) => Descriptor :: Wsh ( wsh. translate_pk ( t) ?) ,
375+ Descriptor :: Tr ( ref tr) => Descriptor :: Tr ( tr. translate_pk ( t) ?) ,
376+ } ;
377+ Ok ( desc)
378+ }
362379}
363380
364381impl < Pk : MiniscriptKey + ToPublicKey > Descriptor < Pk > {
@@ -551,30 +568,6 @@ impl Descriptor<DefiniteDescriptorKey> {
551568 }
552569}
553570
554- impl < P , Q > TranslatePk < P , Q > for Descriptor < P >
555- where
556- P : MiniscriptKey ,
557- Q : MiniscriptKey ,
558- {
559- type Output = Descriptor < Q > ;
560-
561- /// Converts a descriptor using abstract keys to one using specific keys.
562- fn translate_pk < T , E > ( & self , t : & mut T ) -> Result < Self :: Output , TranslateErr < E > >
563- where
564- T : Translator < P , Q , E > ,
565- {
566- let desc = match * self {
567- Descriptor :: Bare ( ref bare) => Descriptor :: Bare ( bare. translate_pk ( t) ?) ,
568- Descriptor :: Pkh ( ref pk) => Descriptor :: Pkh ( pk. translate_pk ( t) ?) ,
569- Descriptor :: Wpkh ( ref pk) => Descriptor :: Wpkh ( pk. translate_pk ( t) ?) ,
570- Descriptor :: Sh ( ref sh) => Descriptor :: Sh ( sh. translate_pk ( t) ?) ,
571- Descriptor :: Wsh ( ref wsh) => Descriptor :: Wsh ( wsh. translate_pk ( t) ?) ,
572- Descriptor :: Tr ( ref tr) => Descriptor :: Tr ( tr. translate_pk ( t) ?) ,
573- } ;
574- Ok ( desc)
575- }
576- }
577-
578571impl < Pk : MiniscriptKey > ForEachKey < Pk > for Descriptor < Pk > {
579572 fn for_each_key < ' a , F : FnMut ( & ' a Pk ) -> bool > ( & ' a self , pred : F ) -> bool {
580573 match * self {
0 commit comments