@@ -301,6 +301,9 @@ impl<Pk: MiniscriptKey> fmt::Display for Terminal<Pk> {
301301 if let Terminal :: PkK ( ref pk) = sub. node {
302302 // alias: pk(K) = c:pk_k(K)
303303 return write ! ( f, "pk({})" , pk) ;
304+ } else if let Terminal :: PkH ( ref pkh) = sub. node {
305+ // alias: pkh(K) = c:pk_h(K)
306+ return write ! ( f, "pkh({})" , pkh) ;
304307 }
305308 }
306309
@@ -314,6 +317,8 @@ impl<Pk: MiniscriptKey> fmt::Display for Terminal<Pk> {
314317 Some ( ( 'c' , ms) ) => {
315318 if let Terminal :: PkK ( ref _pk) = ms. node {
316319 fmt:: Write :: write_char ( f, ':' ) ?;
320+ } else if let Terminal :: PkH ( ref _pkh) = ms. node {
321+ fmt:: Write :: write_char ( f, ':' ) ?;
317322 }
318323 }
319324 _ => { }
@@ -345,7 +350,7 @@ where
345350 <<Pk as MiniscriptKey >:: Hash as str:: FromStr >:: Err : ToString ,
346351{
347352 fn from_tree ( top : & expression:: Tree ) -> Result < Terminal < Pk > , Error > {
348- let aliased_wrap;
353+ let mut aliased_wrap;
349354 let frag_name;
350355 let frag_wrap;
351356 let mut name_split = top. name . split ( ':' ) ;
@@ -358,6 +363,9 @@ where
358363 if name == "pk" {
359364 frag_name = "pk_k" ;
360365 frag_wrap = "c" ;
366+ } else if name == "pkh" {
367+ frag_name = "pk_h" ;
368+ frag_wrap = "c" ;
361369 } else {
362370 frag_name = name;
363371 frag_wrap = "" ;
@@ -369,7 +377,13 @@ where
369377 }
370378 if name == "pk" {
371379 frag_name = "pk_k" ;
372- aliased_wrap = wrap. to_owned ( ) + & "c" ;
380+ aliased_wrap = wrap. to_owned ( ) ;
381+ aliased_wrap. push_str ( "c" ) ;
382+ frag_wrap = & aliased_wrap;
383+ } else if name == "pkh" {
384+ frag_name = "pk_h" ;
385+ aliased_wrap = wrap. to_owned ( ) ;
386+ aliased_wrap. push_str ( "c" ) ;
373387 frag_wrap = & aliased_wrap;
374388 } else {
375389 frag_name = name;
0 commit comments