|
|
# 使用宏(macro)使代码更精简
|
|
|
|
|
|
- `get_every_execution_gadgets`可以获得一个Vec<ExecutionGadget>。每开发一个ExecutionGadget,都要在其定义处加上gadget的new函数。这样我们在core里或者witness生成的地方就可以直接调用它获取所有的ExecutionGadget。
|
|
|
|
|
|
- `generate_execution_gadget_test_circuit`在每个execution gadget文件里的`mod test`中使用,可以帮助你定义一个TestCircuit并生成相应的接口实现代码。
|
|
|
|
|
|
- `prepare_witness_and_prover`在每个execution gadget文件里的测试函数`fn text_xx()`中使用,能生成witness并将其放入一个TestCircuit的实例中,然后生成对应的MockProver。
|
|
|
|
|
|
- `extract_lookup_expression`对于我们定义的enum `LookupEntry`,可以展开其中的成员。不过必须要输入表示其类型的字符串。例如`let (a,b,c,d,e,f,g,h) = extract_lookup_expression!(state, lookup_entry);` 其中state是字符串。
|
|
|
|
|
|
- `assign_or_panic`是对于Witness表格中一个格子进行赋值。如果格子已经被赋值,则报错。多用于多功能列中,防止同一个格子被使用多次。 |
|
|
\ No newline at end of file |