@@ -42,112 +42,77 @@ pub impl ReaderImpl of ReaderTrait {
4242 }
4343
4444 /// Reads the specified number of bytes (up to 16) as a big endian unsigned integer.
45- fn read_num_bytes (ref self : Reader , num_bytes : u8 ) -> Result < u128 , Error > {
45+ fn read_num_bytes (ref self : Reader , num_bytes : u8 ) -> u128 {
4646 assert! (num_bytes <= 16 , " Reader::read_num_bytes: num_bytes is too large" );
4747 if num_bytes <= self . num_current_bytes {
48- let x = self . read_from_current (num_bytes );
49- return Result :: Ok (x );
48+ return self . read_from_current (num_bytes );
5049 }
5150 let num_low_bytes = num_bytes - self . num_current_bytes;
5251 let high = self . current;
53- self . fetch_next ()? ;
54- let low = self . read_num_bytes (num_low_bytes )? ;
55- let value = if num_low_bytes == 16 {
52+ self . fetch_next ();
53+ let low = self . read_num_bytes (num_low_bytes );
54+ if num_low_bytes == 16 {
5655 low
5756 } else {
5857 high * one_shift_left_bytes_u128 (num_low_bytes ) + low
59- };
60- Result :: Ok (value )
58+ }
6159 }
6260
63- fn read_u256 (ref self : Reader ) -> Result < u256 , Error > {
64- let high = self . read_num_bytes (16 )? ;
65- let low = self . read_num_bytes (16 )? ;
61+ fn read_u256 (ref self : Reader ) -> u256 {
62+ let high = self . read_num_bytes (16 );
63+ let low = self . read_num_bytes (16 );
6664 let value = u256 { high , low };
67- Result :: Ok ( value )
65+ value
6866 }
69- fn read_u160 (ref self : Reader ) -> Result <u256 , Error > {
70- let high = self . read_num_bytes (4 )? ;
71- let low = self . read_num_bytes (16 )? ;
72- let value = u256 { high , low };
73- Result :: Ok (value )
67+ fn read_u160 (ref self : Reader ) -> u256 {
68+ let high = self . read_num_bytes (4 );
69+ let low = self . read_num_bytes (16 );
70+ u256 { high , low }
7471 }
75- fn read_u128 (ref self : Reader ) -> Result < u128 , Error > {
72+ fn read_u128 (ref self : Reader ) -> u128 {
7673 self . read_num_bytes (16 )
7774 }
78- fn read_u64 (ref self : Reader ) -> Result <u64 , Error > {
79- let value = self . read_num_bytes (8 )? . try_into (). expect (UNEXPECTED_OVERFLOW );
80- Result :: Ok (value )
75+ fn read_u64 (ref self : Reader ) -> u64 {
76+ self . read_num_bytes (8 ). try_into (). expect (UNEXPECTED_OVERFLOW )
8177 }
82- fn read_u32 (ref self : Reader ) -> Result <u32 , Error > {
83- let value = self . read_num_bytes (4 )? . try_into (). expect (UNEXPECTED_OVERFLOW );
84- Result :: Ok (value )
78+ fn read_u32 (ref self : Reader ) -> u32 {
79+ self . read_num_bytes (4 ). try_into (). expect (UNEXPECTED_OVERFLOW )
8580 }
86- fn read_u16 (ref self : Reader ) -> Result <u16 , Error > {
87- let value = self . read_num_bytes (2 )? . try_into (). expect (UNEXPECTED_OVERFLOW );
88- Result :: Ok (value )
81+ fn read_u16 (ref self : Reader ) -> u16 {
82+ self . read_num_bytes (2 ). try_into (). expect (UNEXPECTED_OVERFLOW )
8983 }
90- fn read_u8 (ref self : Reader ) -> Result <u8 , Error > {
91- let value = self . read_num_bytes (1 )? . try_into (). expect (UNEXPECTED_OVERFLOW );
92- Result :: Ok (value )
84+ fn read_u8 (ref self : Reader ) -> u8 {
85+ self . read_num_bytes (1 ). try_into (). expect (UNEXPECTED_OVERFLOW )
9386 }
9487
9588 // TODO: skip without calculating values
96- fn skip (ref self : Reader , mut num_bytes : u8 ) -> Result <(), Error > {
97- let mut result = Result :: Ok (());
89+ fn skip (ref self : Reader , mut num_bytes : u8 ) {
9890 while num_bytes > 0 {
9991 if num_bytes > 16 {
100- match self . read_num_bytes (16 ) {
101- Result :: Ok (_ ) => {},
102- Result :: Err (err ) => {
103- result = Result :: Err (err );
104- break ;
105- }
106- }
92+ self . read_num_bytes (16 );
10793 num_bytes -= 16 ;
10894 } else {
109- match self . read_num_bytes (num_bytes ) {
110- Result :: Ok (_ ) => {},
111- Result :: Err (err ) => {
112- result = Result :: Err (err );
113- break ;
114- }
115- }
116- break ;
95+ self . read_num_bytes (num_bytes );
11796 }
118- };
119- result
97+ }
12098 }
12199
122100 /// Reads the specified number of bytes as a new byte array.
123- fn read_byte_array (ref self : Reader , num_bytes : usize ) -> Result < ByteArray , Error > {
101+ fn read_byte_array (ref self : Reader , num_bytes : usize ) -> ByteArray {
124102 let mut array : Array <bytes31 > = array! [];
125- let mut num_last_bytes = Option :: None ;
103+ let mut num_last_bytes = 0 ;
126104 let mut num_remaining_bytes = num_bytes ;
127105 loop {
128- let r = self . read_bytes_iteration (num_remaining_bytes , ref array );
129- match r {
130- Result :: Ok ((
131- num_read , eof
132- )) => {
133- num_remaining_bytes -= num_read ;
134- if eof {
135- num_last_bytes = Option :: Some (Result :: Ok (num_read ));
136- break ;
137- }
138- },
139- Result :: Err (err ) => {
140- num_last_bytes = Option :: Some (Result :: Err (err ));
141- break ;
142- }
106+ let (num_read , eof ) = self . read_bytes_iteration (num_remaining_bytes , ref array );
107+ num_remaining_bytes -= num_read ;
108+ if eof {
109+ num_last_bytes = num_read ;
110+ break ;
143111 }
144112 };
145- // `num_last_bytes` is always set to Some before break.
146- let num_last_bytes = num_last_bytes . unwrap ()? ;
147113 // num_last_bytes < 31
148114 let num_last_bytes = num_last_bytes . try_into (). expect (UNEXPECTED_OVERFLOW );
149- let array = ByteArrayImpl :: new (array , num_last_bytes );
150- Result :: Ok (array )
115+ ByteArrayImpl :: new (array , num_last_bytes )
151116 }
152117
153118 /// Returns number of remaining bytes to read.
@@ -179,15 +144,18 @@ impl ReaderPrivateImpl of ReaderPrivateTrait {
179144 /// Replenishes `self.current` and `self.num_current_bytes`.
180145 /// This should only be called when all bytes from `self.current` has been read.
181146 /// Returns `EOF` error if no more data is available.
182- fn fetch_next (ref self : Reader ) -> Result <(), Error > {
147+ fn fetch_next (ref self : Reader ) {
183148 match self . next {
184149 Option :: Some (next ) => {
185150 self . next = Option :: None ;
186151 self . current = next ;
187152 self . num_current_bytes = 16 ;
188153 },
189154 Option :: None => {
190- let (value , bytes ) = self . array. pop_front (). ok_or (Error :: UnexpectedEndOfInput )? ;
155+ let (value , bytes ) = self
156+ . array
157+ . pop_front ()
158+ . expect (Error :: UnexpectedEndOfInput . into ());
191159 let value : u256 = value . into ();
192160 if bytes > 16 {
193161 self . current = value . high;
@@ -199,33 +167,31 @@ impl ReaderPrivateImpl of ReaderPrivateTrait {
199167 }
200168 },
201169 }
202- Result :: Ok (())
203170 }
204171
205172 // Moved out from `read_bytes` because we cannot use `return` or `?` within a loop.
206173 fn read_bytes_iteration (
207174 ref self : Reader , num_bytes : usize , ref array : Array <bytes31 >
208- ) -> Result < (usize , bool ), Error > {
175+ ) -> (usize , bool ) {
209176 if num_bytes >= 31 {
210- let high = self . read_num_bytes (15 )? ;
211- let low = self . read_num_bytes (16 )? ;
177+ let high = self . read_num_bytes (15 );
178+ let low = self . read_num_bytes (16 );
212179 let value : felt252 = u256 { high , low }. try_into (). expect (UNEXPECTED_OVERFLOW );
213180 array . append (value . try_into (). expect (UNEXPECTED_OVERFLOW ));
214- Result :: Ok (( 31 , false ) )
181+ ( 31 , false )
215182 } else if num_bytes > 16 {
216183 // num_bytes < 31
217- let high = self
218- . read_num_bytes ((num_bytes - 16 ). try_into (). expect (UNEXPECTED_OVERFLOW ))? ;
219- let low = self . read_num_bytes (16 )? ;
184+ let high = self . read_num_bytes ((num_bytes - 16 ). try_into (). expect (UNEXPECTED_OVERFLOW ));
185+ let low = self . read_num_bytes (16 );
220186 let value : felt252 = u256 { high , low }. try_into (). expect (UNEXPECTED_OVERFLOW );
221187 array . append (value . try_into (). expect (UNEXPECTED_OVERFLOW ));
222- Result :: Ok (( num_bytes , true ) )
188+ ( num_bytes , true )
223189 } else {
224190 // bytes < 16
225- let low = self . read_num_bytes (num_bytes . try_into (). expect (UNEXPECTED_OVERFLOW ))? ;
191+ let low = self . read_num_bytes (num_bytes . try_into (). expect (UNEXPECTED_OVERFLOW ));
226192 let value : felt252 = low . try_into (). expect (UNEXPECTED_OVERFLOW );
227193 array . append (value . try_into (). expect (UNEXPECTED_OVERFLOW ));
228- Result :: Ok (( num_bytes , true ) )
194+ ( num_bytes , true )
229195 }
230196 }
231197}
0 commit comments