mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-08 16:53:07 +00:00
Make serializer work with slices instead of Vec
This commit is contained in:
parent
3de92d9ed1
commit
d960bfe2a3
@ -297,7 +297,7 @@ where
|
|||||||
gate_serializer: &dyn GateSerializer<F, D>,
|
gate_serializer: &dyn GateSerializer<F, D>,
|
||||||
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
||||||
) -> IoResult<Self> {
|
) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes.to_vec());
|
let mut buffer = Buffer::new(bytes);
|
||||||
let root =
|
let root =
|
||||||
RootCircuitData::from_buffer(&mut buffer, gate_serializer, generator_serializer)?;
|
RootCircuitData::from_buffer(&mut buffer, gate_serializer, generator_serializer)?;
|
||||||
let aggregation = AggregationCircuitData::from_buffer(
|
let aggregation = AggregationCircuitData::from_buffer(
|
||||||
|
|||||||
@ -134,7 +134,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
|||||||
gate_serializer: &dyn GateSerializer<F, D>,
|
gate_serializer: &dyn GateSerializer<F, D>,
|
||||||
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
||||||
) -> IoResult<Self> {
|
) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes.to_vec());
|
let mut buffer = Buffer::new(bytes);
|
||||||
buffer.read_circuit_data(gate_serializer, generator_serializer)
|
buffer.read_circuit_data(gate_serializer, generator_serializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
|||||||
gate_serializer: &dyn GateSerializer<F, D>,
|
gate_serializer: &dyn GateSerializer<F, D>,
|
||||||
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
generator_serializer: &dyn WitnessGeneratorSerializer<F, D>,
|
||||||
) -> IoResult<Self> {
|
) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes.to_vec());
|
let mut buffer = Buffer::new(bytes);
|
||||||
buffer.read_prover_circuit_data(gate_serializer, generator_serializer)
|
buffer.read_prover_circuit_data(gate_serializer, generator_serializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
|||||||
bytes: Vec<u8>,
|
bytes: Vec<u8>,
|
||||||
gate_serializer: &dyn GateSerializer<F, D>,
|
gate_serializer: &dyn GateSerializer<F, D>,
|
||||||
) -> IoResult<Self> {
|
) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
buffer.read_verifier_circuit_data(gate_serializer)
|
buffer.read_verifier_circuit_data(gate_serializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ impl<C: GenericConfig<D>, const D: usize> VerifierOnlyCircuitData<C, D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_bytes(bytes: Vec<u8>) -> IoResult<Self> {
|
pub fn from_bytes(bytes: Vec<u8>) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
buffer.read_verifier_only_circuit_data()
|
buffer.read_verifier_only_circuit_data()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -379,7 +379,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CommonCircuitData<F, D> {
|
|||||||
bytes: Vec<u8>,
|
bytes: Vec<u8>,
|
||||||
gate_serializer: &dyn GateSerializer<F, D>,
|
gate_serializer: &dyn GateSerializer<F, D>,
|
||||||
) -> IoResult<Self> {
|
) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
buffer.read_common_circuit_data(gate_serializer)
|
buffer.read_common_circuit_data(gate_serializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -116,7 +116,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
|||||||
bytes: Vec<u8>,
|
bytes: Vec<u8>,
|
||||||
common_data: &CommonCircuitData<F, D>,
|
common_data: &CommonCircuitData<F, D>,
|
||||||
) -> anyhow::Result<Self> {
|
) -> anyhow::Result<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
let proof = buffer
|
let proof = buffer
|
||||||
.read_proof_with_public_inputs(common_data)
|
.read_proof_with_public_inputs(common_data)
|
||||||
.map_err(anyhow::Error::msg)?;
|
.map_err(anyhow::Error::msg)?;
|
||||||
@ -246,7 +246,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
|
|||||||
bytes: Vec<u8>,
|
bytes: Vec<u8>,
|
||||||
common_data: &CommonCircuitData<F, D>,
|
common_data: &CommonCircuitData<F, D>,
|
||||||
) -> anyhow::Result<Self> {
|
) -> anyhow::Result<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
let proof = buffer
|
let proof = buffer
|
||||||
.read_compressed_proof_with_public_inputs(common_data)
|
.read_compressed_proof_with_public_inputs(common_data)
|
||||||
.map_err(anyhow::Error::msg)?;
|
.map_err(anyhow::Error::msg)?;
|
||||||
|
|||||||
@ -49,7 +49,7 @@ impl VerifierCircuitTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_bytes(bytes: Vec<u8>) -> IoResult<Self> {
|
pub fn from_bytes(bytes: Vec<u8>) -> IoResult<Self> {
|
||||||
let mut buffer = Buffer::new(bytes);
|
let mut buffer = Buffer::new(&bytes);
|
||||||
let constants_sigmas_cap = buffer.read_target_merkle_cap()?;
|
let constants_sigmas_cap = buffer.read_target_merkle_cap()?;
|
||||||
let circuit_digest = buffer.read_target_hash()?;
|
let circuit_digest = buffer.read_target_hash()?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
|
|||||||
@ -1993,16 +1993,16 @@ impl Write for Vec<u8> {
|
|||||||
/// Buffer
|
/// Buffer
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Buffer {
|
pub struct Buffer<'a> {
|
||||||
bytes: Vec<u8>,
|
bytes: &'a [u8],
|
||||||
pos: usize,
|
pos: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
impl Buffer {
|
impl<'a> Buffer<'a> {
|
||||||
/// Builds a new [`Buffer`] over `buffer`.
|
/// Builds a new [`Buffer`] over `buffer`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(bytes: Vec<u8>) -> Self {
|
pub fn new(bytes: &'a [u8]) -> Self {
|
||||||
Self { bytes, pos: 0 }
|
Self { bytes, pos: 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2014,26 +2014,24 @@ impl Buffer {
|
|||||||
|
|
||||||
/// Returns the inner buffer.
|
/// Returns the inner buffer.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn bytes(&self) -> Vec<u8> {
|
pub fn bytes(&self) -> &'a [u8] {
|
||||||
self.bytes.clone()
|
self.bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the inner unread buffer.
|
/// Returns the inner unread buffer.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn unread_bytes(&self) -> Vec<u8> {
|
pub fn unread_bytes(&self) -> &'a [u8] {
|
||||||
self.bytes[self.pos..].to_vec()
|
&self.bytes()[self.pos()..]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
impl<'a> Remaining for Buffer<'a> {
|
||||||
impl Remaining for Buffer {
|
|
||||||
fn remaining(&self) -> usize {
|
fn remaining(&self) -> usize {
|
||||||
self.bytes.len() - self.pos
|
self.bytes.len() - self.pos()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
impl<'a> Read for Buffer<'a> {
|
||||||
impl Read for Buffer {
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn read_exact(&mut self, bytes: &mut [u8]) -> IoResult<()> {
|
fn read_exact(&mut self, bytes: &mut [u8]) -> IoResult<()> {
|
||||||
let n = bytes.len();
|
let n = bytes.len();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user