diff --git a/rust/logos-blockchain-circuits-poc-sys/src/native.rs b/rust/logos-blockchain-circuits-poc-sys/src/native.rs index a6222c2..0e516ca 100644 --- a/rust/logos-blockchain-circuits-poc-sys/src/native.rs +++ b/rust/logos-blockchain-circuits-poc-sys/src/native.rs @@ -1,22 +1,20 @@ use std::path::Path; use lbc_types::{ffi, native::{Bytes, Error}}; -use lbc_types::inputs::CircuitDat; use lbc_common::string::path_as_null_terminated_string; use crate::ffi::{poc_generate_witness, poc_generate_witness_from_files}; -pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POC_LIB_DIR"), "/witness_generator.dat")); +const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POC_LIB_DIR"), "/witness_generator.dat")); pub struct PocDat; -impl CircuitDat for PocDat { +impl lbc_types::CircuitDat for PocDat { const DAT: &'static [u8] = RAW_CIRCUIT_DAT; } -pub type PocWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PocDat>; +pub type PocWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PocDat>; pub fn generate_witness( input: PocWitnessInput, ) -> Result { - let input: lbc_types::WitnessInput = input.into(); let ffi_input_guard = input.as_ffi(); let ffi_input = ffi_input_guard.as_ref(); diff --git a/rust/logos-blockchain-circuits-pol-sys/src/native.rs b/rust/logos-blockchain-circuits-pol-sys/src/native.rs index 469c3db..35dd11d 100644 --- a/rust/logos-blockchain-circuits-pol-sys/src/native.rs +++ b/rust/logos-blockchain-circuits-pol-sys/src/native.rs @@ -1,22 +1,20 @@ use std::path::Path; use lbc_types::{ffi, native::{Bytes, Error}}; -use lbc_types::inputs::CircuitDat; use lbc_common::string::path_as_null_terminated_string; use crate::ffi::{pol_generate_witness, pol_generate_witness_from_files}; -pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POL_LIB_DIR"), "/witness_generator.dat")); +const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POL_LIB_DIR"), "/witness_generator.dat")); pub struct PolDat; -impl CircuitDat for PolDat { +impl lbc_types::CircuitDat for PolDat { const DAT: &'static [u8] = RAW_CIRCUIT_DAT; } -pub type PolWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PolDat>; +pub type PolWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PolDat>; pub fn generate_witness( input: PolWitnessInput, ) -> Result { - let input: lbc_types::WitnessInput = input.into(); let ffi_input_guard = input.as_ffi(); let ffi_input = ffi_input_guard.as_ref(); diff --git a/rust/logos-blockchain-circuits-poq-sys/src/native.rs b/rust/logos-blockchain-circuits-poq-sys/src/native.rs index af7bb03..4c5a6b6 100644 --- a/rust/logos-blockchain-circuits-poq-sys/src/native.rs +++ b/rust/logos-blockchain-circuits-poq-sys/src/native.rs @@ -1,22 +1,20 @@ use std::path::Path; use lbc_types::{ffi, native::{Bytes, Error}}; -use lbc_types::inputs::CircuitDat; use lbc_common::string::path_as_null_terminated_string; use crate::ffi::{poq_generate_witness, poq_generate_witness_from_files}; -pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POQ_LIB_DIR"), "/witness_generator.dat")); +const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_POQ_LIB_DIR"), "/witness_generator.dat")); pub struct PoqDat; -impl CircuitDat for PoqDat { +impl lbc_types::CircuitDat for PoqDat { const DAT: &'static [u8] = RAW_CIRCUIT_DAT; } -pub type PoqWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, PoqDat>; +pub type PoqWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, PoqDat>; pub fn generate_witness( input: PoqWitnessInput, ) -> Result { - let input: lbc_types::WitnessInput = input.into(); let ffi_input_guard = input.as_ffi(); let ffi_input = ffi_input_guard.as_ref(); diff --git a/rust/logos-blockchain-circuits-signature-sys/src/native.rs b/rust/logos-blockchain-circuits-signature-sys/src/native.rs index e8df03f..0f415f8 100644 --- a/rust/logos-blockchain-circuits-signature-sys/src/native.rs +++ b/rust/logos-blockchain-circuits-signature-sys/src/native.rs @@ -1,22 +1,20 @@ use std::path::Path; use lbc_types::{ffi, native::{Bytes, Error}}; -use lbc_types::inputs::CircuitDat; use lbc_common::string::path_as_null_terminated_string; use crate::ffi::{signature_generate_witness, signature_generate_witness_from_files}; -pub(crate) const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_SIGNATURE_LIB_DIR"), "/witness_generator.dat")); +const RAW_CIRCUIT_DAT: &[u8] = include_bytes!(concat!(env!("LBC_SIGNATURE_LIB_DIR"), "/witness_generator.dat")); pub struct SignatureDat; -impl CircuitDat for SignatureDat { +impl lbc_types::CircuitDat for SignatureDat { const DAT: &'static [u8] = RAW_CIRCUIT_DAT; } -pub type SignatureWitnessInput<'a> = lbc_types::inputs::CircuitWitnessInput<'a, SignatureDat>; +pub type SignatureWitnessInput<'a> = lbc_types::CircuitWitnessInput<'a, SignatureDat>; pub fn generate_witness( input: SignatureWitnessInput, ) -> Result { - let input: lbc_types::WitnessInput = input.into(); let ffi_input_guard = input.as_ffi(); let ffi_input = ffi_input_guard.as_ref(); diff --git a/rust/logos-blockchain-circuits-types/src/lib.rs b/rust/logos-blockchain-circuits-types/src/lib.rs index 7c3c4ac..f7a9b19 100644 --- a/rust/logos-blockchain-circuits-types/src/lib.rs +++ b/rust/logos-blockchain-circuits-types/src/lib.rs @@ -7,39 +7,4 @@ pub mod native; pub mod ffi; -pub use native::witness_input::WitnessInput; - - -pub mod inputs { - use crate::native::Error; - use crate::WitnessInput; - - pub trait CircuitDat { - const DAT: &'static [u8]; - } - - // TODO: Remove in favour on native::WitnessInput. - pub struct CircuitWitnessInput<'input, Dat> { - inner: WitnessInput<'input>, - _phantom: std::marker::PhantomData - } - - impl<'input, Dat: CircuitDat> CircuitWitnessInput<'input, Dat> { - pub fn new(inputs_json: String) -> Result { - let inner = WitnessInput::new(Dat::DAT, inputs_json)?; - Ok(Self { inner, _phantom: Default::default() }) - } - } - - impl<'input, Dat> From> for WitnessInput<'input> { - fn from(value: CircuitWitnessInput<'input, Dat>) -> Self { - value.inner - } - } - - impl<'input, Dat> From> for CircuitWitnessInput<'input, Dat> { - fn from(value: WitnessInput<'input>) -> Self { - Self { inner: value, _phantom: Default::default() } - } - } -} +pub use native::{CircuitDat, CircuitWitnessInput}; diff --git a/rust/logos-blockchain-circuits-types/src/native/circuit_witness_input.rs b/rust/logos-blockchain-circuits-types/src/native/circuit_witness_input.rs new file mode 100644 index 0000000..125d6cc --- /dev/null +++ b/rust/logos-blockchain-circuits-types/src/native/circuit_witness_input.rs @@ -0,0 +1,38 @@ +use std::ops::Deref; +use crate::native::{WitnessInput, Error}; + +pub trait CircuitDat { + const DAT: &'static [u8]; +} + +pub struct CircuitWitnessInput<'input, Dat> { + inner: WitnessInput<'input>, + _phantom: std::marker::PhantomData +} + +impl<'input, Dat: CircuitDat> CircuitWitnessInput<'input, Dat> { + pub fn new(inputs_json: String) -> Result { + let inner = WitnessInput::new(Dat::DAT, inputs_json)?; + Ok(Self { inner, _phantom: Default::default() }) + } +} + +impl<'input, Dat> From> for WitnessInput<'input> { + fn from(value: CircuitWitnessInput<'input, Dat>) -> Self { + value.inner + } +} + +impl<'input, Dat> From> for CircuitWitnessInput<'input, Dat> { + fn from(value: WitnessInput<'input>) -> Self { + Self { inner: value, _phantom: Default::default() } + } +} + +impl<'input, Dat> Deref for CircuitWitnessInput<'input, Dat> { + type Target = WitnessInput<'input>; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} diff --git a/rust/logos-blockchain-circuits-types/src/native/mod.rs b/rust/logos-blockchain-circuits-types/src/native/mod.rs index 0152c1f..667ff1c 100644 --- a/rust/logos-blockchain-circuits-types/src/native/mod.rs +++ b/rust/logos-blockchain-circuits-types/src/native/mod.rs @@ -5,7 +5,9 @@ pub mod bytes; pub mod status; pub mod witness_input; +pub mod circuit_witness_input; pub use bytes::Bytes; pub use status::{Result, Error}; pub use witness_input::WitnessInput; +pub use circuit_witness_input::{CircuitDat, CircuitWitnessInput};