circuit

Attribute Macro circuit 

Source
#[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 pub become private inputs
  • Fields with pub become public inputs

§Requirements

For generic circuits, type parameters must implement appropriate circuit traits. See the documentation for specific trait bounds required.