cairo-vm
cairo-vm copied to clipboard
Refactor if clause in verify_auto_deductions function
pub fn verify_auto_deductions(&mut self) -> Result<(), VirtualMachineError> {
for (i, segment) in self.memory.data.iter().enumerate() {
for (j, value) in segment.iter().enumerate() {
for (name, builtin) in self.builtin_runners.iter_mut() {
match builtin.base() {
Some(builtin_base) => {
if builtin_base.segment_index == i {
match builtin.deduce_memory_cell(
&MaybeRelocatable::from((i, j)),
&self.memory,
) {
Ok(None) => None,
Ok(Some(deduced_memory_cell)) => {
if Some(&deduced_memory_cell) != value.as_ref()
&& value != &None
{
return Err(
VirtualMachineError::InconsistentAutoDeduction(
name.to_owned(),
deduced_memory_cell,
value.to_owned(),
),
);
}
Some(deduced_memory_cell)
}
_ => {
return Err(VirtualMachineError::InvalidInstructionEncoding)
}
};
}
}
_ => return Err(VirtualMachineError::InvalidInstructionEncoding),
}
}
}
}
Ok(())
}