Skip to content

Commit a4a5617

Browse files
committed
refactor(TasmObject): De-duplicate type decoding
1 parent 52a8ba3 commit a4a5617

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed

tasm-lib/src/structure/manual_tasm_object_implementations.rs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ impl TasmObject for XFieldElement {
206206
.next_tuple()
207207
.ok_or(BFieldCodecError::SequenceTooShort)?;
208208

209-
Ok(Box::new(XFieldElement::new([c_0, c_1, c_2])))
209+
Ok(Box::new(xfe!([c_0, c_1, c_2])))
210210
}
211211
}
212212

@@ -242,7 +242,7 @@ impl TasmObject for bool {
242242
match the_bool.value() {
243243
0 => Ok(Box::new(false)),
244244
1 => Ok(Box::new(true)),
245-
_ => Err(Box::new(BFieldCodecError::SequenceTooShort)),
245+
_ => Err(Box::new(BFieldCodecError::ElementOutOfRange)),
246246
}
247247
}
248248
}
@@ -281,11 +281,7 @@ impl TasmObject for u64 {
281281
.next_tuple()
282282
.ok_or(BFieldCodecError::SequenceTooShort)?;
283283

284-
let too_big = |_| BFieldCodecError::ElementOutOfRange;
285-
let val_lo = u64::from(u32::try_from(val_lo).map_err(too_big)?);
286-
let val_hi = u64::from(u32::try_from(val_hi).map_err(too_big)?);
287-
288-
Ok(Box::new((val_hi << 32) + val_lo))
284+
Ok(Self::decode(&[val_lo, val_hi])?)
289285
}
290286
}
291287

@@ -299,17 +295,11 @@ impl TasmObject for u128 {
299295
}
300296

301297
fn decode_iter<Itr: Iterator<Item = BFieldElement>>(iterator: &mut Itr) -> Result<Box<Self>> {
302-
let (lolo, lohi, hilo, hihi) = iterator
298+
let (lo_lo, lo_hi, hi_lo, hi_hi) = iterator
303299
.next_tuple()
304300
.ok_or(BFieldCodecError::SequenceTooShort)?;
305301

306-
let too_big = |_| BFieldCodecError::ElementOutOfRange;
307-
let lolo = u128::from(u32::try_from(lolo).map_err(too_big)?);
308-
let lohi = u128::from(u32::try_from(lohi).map_err(too_big)?);
309-
let hilo = u128::from(u32::try_from(hilo).map_err(too_big)?);
310-
let hihi = u128::from(u32::try_from(hihi).map_err(too_big)?);
311-
312-
Ok(Box::new((hihi << 96) + (hilo << 64) + (lohi << 32) + lolo))
302+
Ok(Self::decode(&[lo_lo, lo_hi, hi_lo, hi_hi])?)
313303
}
314304
}
315305

@@ -430,7 +420,7 @@ impl TasmObject for Polynomial<'_, XFieldElement> {
430420
pop 1
431421
// _ list_length field_size
432422

433-
push {Polynomial::<XFieldElement>::MAX_OFFSET}
423+
push {Self::MAX_OFFSET}
434424
dup 1
435425
lt
436426
assert

0 commit comments

Comments
 (0)