pub struct Circuit<F: AcirField> {
pub function_name: String,
pub current_witness_index: u32,
pub opcodes: Vec<Opcode<F>>,
pub private_parameters: BTreeSet<Witness>,
pub public_parameters: PublicInputs,
pub return_values: PublicInputs,
pub assert_messages: Vec<(OpcodeLocation, AssertionPayload<F>)>,
}Expand description
Representation of a single ACIR circuit. The execution trace of this structure is dictated by the construction of a crate::native_types::WitnessMap
Fields§
§function_name: StringName of the function represented by this circuit.
current_witness_index: u32The current highest witness index in the circuit.
This is tracked as an optimization so that when new witness values are created, incrementing this witness results in a new unique witness index without needing to scan all opcodes to find the maximum witness index.
opcodes: Vec<Opcode<F>>The circuit opcodes representing the relationship between witness values.
The opcodes should be further converted into a backend-specific circuit representation. When initial witness inputs are provided, these opcodes can also be used for generating an execution trace.
private_parameters: BTreeSet<Witness>The set of private inputs to the circuit.
public_parameters: PublicInputsThe set of public inputs provided by the prover.
return_values: PublicInputsThe set of public inputs calculated within the circuit.
assert_messages: Vec<(OpcodeLocation, AssertionPayload<F>)>Maps opcode locations to failed assertion payloads. The data in the payload is embedded in the circuit to provide useful feedback to users when a constraint in the circuit is not satisfied.
Implementations§
Source§impl<F: AcirField> Circuit<F>
impl<F: AcirField> Circuit<F>
Sourcepub fn circuit_arguments(&self) -> BTreeSet<Witness>
pub fn circuit_arguments(&self) -> BTreeSet<Witness>
Returns all witnesses which are required to execute the circuit successfully.
Sourcepub fn public_inputs(&self) -> PublicInputs
pub fn public_inputs(&self) -> PublicInputs
Returns all public inputs. This includes those provided as parameters to the circuit and those computed as return values.
Source§impl Circuit<FieldElement>
impl Circuit<FieldElement>
Sourcepub fn from_str(src: &str) -> Result<Self, AcirParserErrorWithSource>
pub fn from_str(src: &str) -> Result<Self, AcirParserErrorWithSource>
Creates a Circuit object from the given string.
pub fn from_str_impl(src: &str) -> Result<Self, AcirParserErrorWithSource>
Trait Implementations§
Source§impl<'de, F> Deserialize<'de> for Circuit<F>where
F: Deserialize<'de> + AcirField,
impl<'de, F> Deserialize<'de> for Circuit<F>where
F: Deserialize<'de> + AcirField,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl FromStr for Circuit<FieldElement>
impl FromStr for Circuit<FieldElement>
Source§impl<F: AcirField> ProtoCodec<Circuit<F>, Circuit> for ProtoSchema<F>
impl<F: AcirField> ProtoCodec<Circuit<F>, Circuit> for ProtoSchema<F>
Source§fn decode(value: &Circuit) -> Result<Circuit<F>>
fn decode(value: &Circuit) -> Result<Circuit<F>>
R to domain type T.Source§fn encode_some(value: &T) -> Option<R>
fn encode_some(value: &T) -> Option<R>
Some.Source§fn encode_vec<'a, I>(values: I) -> Vec<R>where
I: IntoIterator<Item = &'a T>,
T: 'a,
fn encode_vec<'a, I>(values: I) -> Vec<R>where
I: IntoIterator<Item = &'a T>,
T: 'a,
Source§fn decode_wrap(value: &R, msg: &'static str) -> Result<T, Report>
fn decode_wrap(value: &R, msg: &'static str) -> Result<T, Report>
Source§fn decode_vec_wrap(values: &[R], msg: &'static str) -> Result<Vec<T>, Report>
fn decode_vec_wrap(values: &[R], msg: &'static str) -> Result<Vec<T>, Report>
Source§fn decode_arr<const N: usize>(values: &[R]) -> Result<[T; N], Report>
fn decode_arr<const N: usize>(values: &[R]) -> Result<[T; N], Report>
Source§fn decode_arr_wrap<const N: usize>(
values: &[R],
msg: &'static str,
) -> Result<[T; N], Report>
fn decode_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<[T; N], Report>
Source§fn decode_box_arr<const N: usize>(values: &[R]) -> Result<Box<[T; N]>, Report>
fn decode_box_arr<const N: usize>(values: &[R]) -> Result<Box<[T; N]>, Report>
Source§fn decode_box_arr_wrap<const N: usize>(
values: &[R],
msg: &'static str,
) -> Result<Box<[T; N]>, Report>
fn decode_box_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<Box<[T; N]>, Report>
Source§fn decode_some(value: &Option<R>) -> Result<T, Report>
fn decode_some(value: &Option<R>) -> Result<T, Report>
None.Source§fn decode_some_wrap(value: &Option<R>, msg: &'static str) -> Result<T, Report>
fn decode_some_wrap(value: &Option<R>, msg: &'static str) -> Result<T, Report>
Source§fn decode_opt_wrap(
value: &Option<R>,
msg: &'static str,
) -> Result<Option<T>, Report>
fn decode_opt_wrap( value: &Option<R>, msg: &'static str, ) -> Result<Option<T>, Report>
None if the field is missing.impl<F: Eq + AcirField> Eq for Circuit<F>
impl<F: AcirField> StructuralPartialEq for Circuit<F>
Auto Trait Implementations§
impl<F> Freeze for Circuit<F>
impl<F> RefUnwindSafe for Circuit<F>where
F: RefUnwindSafe,
impl<F> Send for Circuit<F>where
F: Send,
impl<F> Sync for Circuit<F>where
F: Sync,
impl<F> Unpin for Circuit<F>where
F: Unpin,
impl<F> UnwindSafe for Circuit<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more