#[circuit]Expand description
Circuit attribute macro for defining zero-knowledge circuits.
This macro automatically generates the necessary implementations for circuit structures, including witness handling, variable management, and circuit element traits.
§Features
- Automatic witness generation: Creates corresponding witness structures
- Public/private field handling: Respects Rust visibility modifiers
- Generic support: Works with generic circuit structures
- Type safety: Ensures proper variable and witness type relationships
§Usage
§Basic Circuit
ⓘ
use rsnark::circuit;
#[circuit]
pub struct MyCircuit {
a: u32, // private input
pub b: u32, // public input
}§Generic Circuit
ⓘ
#[circuit]
pub struct GenericCircuit<T> {
input: T,
pub output: T,
}§Field Visibility
- Fields without
pubbecome private inputs - Fields with
pubbecome public inputs
§Requirements
For generic circuits, type parameters must implement appropriate circuit traits. See the documentation for specific trait bounds required.