@@ -3,12 +3,15 @@ use bitcoin::blockdata::script::{Instruction, PushBytes, PushBytesBuf, ScriptBuf
3
3
use bitcoin:: opcodes:: { OP_0 , OP_TRUE } ;
4
4
use bitcoin:: script:: write_scriptint;
5
5
use bitcoin:: Witness ;
6
- use serde:: { Deserialize , Serialize } ;
7
6
use std:: collections:: HashMap ;
8
7
use std:: convert:: TryFrom ;
9
8
use std:: hash:: { DefaultHasher , Hash , Hasher } ;
10
9
11
- #[ derive( Clone , Debug , Hash , Serialize , Deserialize , PartialEq ) ]
10
+ #[ cfg( feature = "serde" ) ]
11
+ use serde:: { Deserialize , Serialize } ;
12
+
13
+ #[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
14
+ #[ derive( Clone , Debug , Hash , PartialEq ) ]
12
15
pub enum Block {
13
16
Call ( u64 ) ,
14
17
Script ( ScriptBuf ) ,
@@ -21,7 +24,8 @@ impl Block {
21
24
}
22
25
}
23
26
24
- #[ derive( Clone , Debug , Serialize , Deserialize , PartialEq ) ]
27
+ #[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
28
+ #[ derive( Clone , Debug , PartialEq ) ]
25
29
pub struct StructuredScript {
26
30
size : usize ,
27
31
pub debug_identifier : String ,
@@ -43,15 +47,18 @@ fn calculate_hash<T: Hash>(t: &T) -> u64 {
43
47
44
48
impl StructuredScript {
45
49
pub fn new ( debug_info : & str ) -> Self {
46
- let blocks = Vec :: new ( ) ;
47
50
StructuredScript {
48
51
size : 0 ,
49
52
debug_identifier : debug_info. to_string ( ) ,
50
- blocks,
53
+ blocks : Vec :: new ( ) ,
51
54
script_map : HashMap :: new ( ) ,
52
55
}
53
56
}
54
57
58
+ pub fn is_empty ( & self ) -> bool {
59
+ self . size == 0
60
+ }
61
+
55
62
pub fn len ( & self ) -> usize {
56
63
self . size
57
64
}
@@ -63,7 +70,7 @@ impl StructuredScript {
63
70
pub fn get_structured_script ( & self , id : & u64 ) -> & StructuredScript {
64
71
self . script_map
65
72
. get ( id)
66
- . expect ( & format ! ( "script id: {} not found in script_map." , id) )
73
+ . unwrap_or_else ( || panic ! ( "script id: {} not found in script_map." , id) )
67
74
}
68
75
69
76
// Return the debug information of the Opcode at position
@@ -133,10 +140,10 @@ impl StructuredScript {
133
140
}
134
141
135
142
pub fn push_env_script ( mut self , mut data : StructuredScript ) -> StructuredScript {
136
- if data. len ( ) == 0 {
143
+ if data. is_empty ( ) {
137
144
return self ;
138
145
}
139
- if self . len ( ) == 0 {
146
+ if self . is_empty ( ) {
140
147
return data;
141
148
}
142
149
@@ -342,8 +349,7 @@ impl NotU8Pushable for u32 {
342
349
}
343
350
impl NotU8Pushable for usize {
344
351
fn bitcoin_script_push ( self , builder : StructuredScript ) -> StructuredScript {
345
- builder
346
- . push_int ( i64:: try_from ( self ) . unwrap_or_else ( |_| panic ! ( "Usize does not fit in i64" ) ) )
352
+ builder. push_int ( i64:: try_from ( self ) . expect ( "Usize does not fit in i64" ) )
347
353
}
348
354
}
349
355
impl NotU8Pushable for Vec < u8 > {
0 commit comments