Struct zkevm_circuits::copy_circuit::CopyCircuit
source · pub struct CopyCircuit<F: Field> {
pub copy_events: Vec<CopyEvent>,
pub max_copy_rows: usize,
pub external_data: ExternalData,
/* private fields */
}
Expand description
Copy Circuit
Fields§
§copy_events: Vec<CopyEvent>
Copy events
max_copy_rows: usize
Max number of rows in copy circuit
external_data: ExternalData
Data for external lookup tables
Implementations§
source§impl<F: Field> CopyCircuit<F>
impl<F: Field> CopyCircuit<F>
sourcepub fn new_with_external_data(
copy_events: Vec<CopyEvent>,
max_copy_rows: usize,
external_data: ExternalData
) -> Self
pub fn new_with_external_data( copy_events: Vec<CopyEvent>, max_copy_rows: usize, external_data: ExternalData ) -> Self
Return a new CopyCircuit with external data
sourcepub fn new_from_block_no_external(block: &Block<F>, chunk: &Chunk<F>) -> Self
pub fn new_from_block_no_external(block: &Block<F>, chunk: &Chunk<F>) -> Self
Return a new CopyCircuit from a block without the external data required to assign lookup tables. This constructor is only suitable to be used by the SuperCircuit, which already assigns the external lookup tables.
Trait Implementations§
source§impl<F: Field> Circuit<F> for CopyCircuit<F>
impl<F: Field> Circuit<F> for CopyCircuit<F>
§type Config = (CopyCircuitConfig<F>, Challenges)
type Config = (CopyCircuitConfig<F>, Challenges)
This is a configuration object that stores things like columns.
§type FloorPlanner = SimpleFloorPlanner
type FloorPlanner = SimpleFloorPlanner
The floor planner used for this circuit. This is an associated type of the
Circuit
trait because its behaviour is circuit-critical.source§fn without_witnesses(&self) -> Self
fn without_witnesses(&self) -> Self
Returns a copy of this circuit with no witness values (i.e. all witnesses set to
None
). For most circuits, this will be equal to Self::default()
.source§fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
The circuit is given an opportunity to describe the exact gate
arrangement, column arrangement, etc.
source§fn synthesize(
&self,
config: Self::Config,
layouter: impl Layouter<F>
) -> Result<(), Error>
fn synthesize( &self, config: Self::Config, layouter: impl Layouter<F> ) -> Result<(), Error>
Given the provided
cs
, synthesize the circuit. The concrete type of
the caller will be different depending on the context, and they may or
may not expect to have a witness present.§fn params(&self) -> Self::Params
fn params(&self) -> Self::Params
Returns a reference to the parameters that should be used to configure the circuit.
Requires the
circuit-params
feature.§fn configure_with_params(
meta: &mut ConstraintSystem<F>,
_params: Self::Params
) -> Self::Config
fn configure_with_params( meta: &mut ConstraintSystem<F>, _params: Self::Params ) -> Self::Config
The circuit is given an opportunity to describe the exact gate
arrangement, column arrangement, etc. Takes a runtime parameter. The default
implementation calls
configure
ignoring the _params
argument in order to easily support
circuits that don’t use configuration parameters.source§impl<F: Clone + Field> Clone for CopyCircuit<F>
impl<F: Clone + Field> Clone for CopyCircuit<F>
source§fn clone(&self) -> CopyCircuit<F>
fn clone(&self) -> CopyCircuit<F>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<F: Default + Field> Default for CopyCircuit<F>
impl<F: Default + Field> Default for CopyCircuit<F>
source§fn default() -> CopyCircuit<F>
fn default() -> CopyCircuit<F>
Returns the “default value” for a type. Read more
source§impl<F: Field> SubCircuit<F> for CopyCircuit<F>
impl<F: Field> SubCircuit<F> for CopyCircuit<F>
source§fn min_num_rows_block(block: &Block<F>, chunk: &Chunk<F>) -> (usize, usize)
fn min_num_rows_block(block: &Block<F>, chunk: &Chunk<F>) -> (usize, usize)
Return the minimum number of rows required to prove the block
source§fn synthesize_sub(
&self,
config: &Self::Config,
challenges: &Challenges<Value<F>>,
layouter: &mut impl Layouter<F>
) -> Result<(), Error>
fn synthesize_sub( &self, config: &Self::Config, challenges: &Challenges<Value<F>>, layouter: &mut impl Layouter<F> ) -> Result<(), Error>
Make the assignments to the CopyCircuit
§type Config = CopyCircuitConfig<F>
type Config = CopyCircuitConfig<F>
Configuration of the SubCircuit.
source§fn unusable_rows() -> usize
fn unusable_rows() -> usize
Returns number of unusable rows of the SubCircuit, which should be
meta.blinding_factors() + 1
.source§fn new_from_block(block: &Block<F>, chunk: &Chunk<F>) -> Self
fn new_from_block(block: &Block<F>, chunk: &Chunk<F>) -> Self
Create a new SubCircuit from a witness Block
Auto Trait Implementations§
impl<F> RefUnwindSafe for CopyCircuit<F>where
F: RefUnwindSafe,
impl<F> Send for CopyCircuit<F>
impl<F> Sync for CopyCircuit<F>
impl<F> Unpin for CopyCircuit<F>where
F: Unpin,
impl<F> UnwindSafe for CopyCircuit<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
Mutably borrows from an owned value. Read more
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§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> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.