| 150 | self.return_as_variable(v) |
| 151 | } |
| 152 | fn new_hint( |
| 153 | &mut self, |
| 154 | hint_key: &str, |
| 155 | inputs: &[Variable], |
| 156 | num_outputs: usize, |
| 157 | ) -> Vec<Variable> { |
| 158 | ensure_variables_valid(inputs); |
| 159 | let inputs: Vec<CircuitField<C>> = |
| 160 | inputs.iter().map(|v| self.convert_to_value(v)).collect(); |
| 161 | match self |
| 162 | .hint_caller |
| 163 | .call(hint_key_to_id(hint_key), &inputs, num_outputs) |
| 164 | { |
| 165 | Ok(outputs) => outputs |
| 166 | .into_iter() |
| 167 | .map(|v| self.return_as_variable(v)) |
| 168 | .collect(), |
| 169 | Err(e) => panic!("Hint error: {e:?}"), |
| 170 | } |
| 171 | } |
| 172 | fn constant(&mut self, x: impl ToVariableOrValue<CircuitField<C>>) -> Variable { |
| 173 | let x = self.convert_to_value(x); |
| 174 | self.return_as_variable(x) |