# arcis-interpreter-proc-macros

[![Crates.io](https://img.shields.io/crates/v/arcis-interpreter-proc-macros.svg)](https://crates.io/crates/arcis-interpreter-proc-macros)

Procedural macros for writing MPC circuits with the Arcis framework. This crate provides the attribute and derive macros that enable the ergonomic syntax for defining encrypted computations, making it easier to write secure multi-party computation logic in Rust.

## Usage

```rust
use arcis_interpreter_proc_macros::encrypted;

#[encrypted]
fn secure_computation(a_ctx: Enc<Shared, u32>, b_ctx: Enc<Shared, u32>) -> Enc<Shared, u32> {
    // This function will be compiled into an MPC circuit
    let a = a_ctx.to_arcis();
    let b = b_ctx.to_arcis();
    a_ctx.owner.from_arcis(a + b)
}
```

## Main Functionality

This procedural macro crate provides:

- Attribute macros for marking functions as encrypted computations
- Derive macros for custom types used in circuits
- Syntax transformations that convert regular Rust code into MPC-compatible circuits

The macros are typically used through the `arcis` crate, which re-exports them for convenient access.
