diff --git a/rust/logos-blockchain-circuits-types/src/core/bytes.rs b/rust/logos-blockchain-circuits-types/src/core/bytes.rs index 5afe60f..0ce8d1c 100644 --- a/rust/logos-blockchain-circuits-types/src/core/bytes.rs +++ b/rust/logos-blockchain-circuits-types/src/core/bytes.rs @@ -2,6 +2,13 @@ use crate::ffi; pub struct Bytes(Vec); +impl Bytes { + #[must_use] + pub fn inner(&self) -> &Vec { + &self.0 + } +} + impl From for Bytes { fn from(mut ffi_value: ffi::Bytes) -> Self { let raw = unsafe { diff --git a/rust/logos-blockchain-circuits-types/src/core/status.rs b/rust/logos-blockchain-circuits-types/src/core/status.rs index e92035f..76992aa 100644 --- a/rust/logos-blockchain-circuits-types/src/core/status.rs +++ b/rust/logos-blockchain-circuits-types/src/core/status.rs @@ -34,7 +34,7 @@ impl TryFrom for () { let error_message = message .map(|inner| DynError::from(inner.to_string_lossy().to_owned())) .unwrap_or_else(|| DynError::from("Unknown error")); - Err(Error::Other(error_message)) + Err(error_message.into()) }, FfiStatusCode::InvalidInput => Err(Error::InvalidInput), FfiStatusCode::OutOfMemory => Err(Error::OutOfMemory), diff --git a/rust/logos-blockchain-circuits-types/src/core/witness_input.rs b/rust/logos-blockchain-circuits-types/src/core/witness_input.rs index c3d3f9c..cce8ea0 100644 --- a/rust/logos-blockchain-circuits-types/src/core/witness_input.rs +++ b/rust/logos-blockchain-circuits-types/src/core/witness_input.rs @@ -18,9 +18,10 @@ impl WitnessInput { } } -/// Represents a guard for managing the lifetime of a WitnessInput in FFI. -/// This struct ensures that the memory allocated for the FFI representation of WitnessInput is -/// properly released when it goes out of scope. +/// Temporary FFI view of a [`WitnessInput`], valid for the lifetime of the source. +/// +/// Owns the C string allocation of `WitnessInput::inputs_json` and ensures it is freed when +/// dropped. pub struct WitnessInputFfiGuard<'a> { ffi: ffi::WitnessInput, _lifetime: std::marker::PhantomData<&'a WitnessInput>, @@ -28,7 +29,7 @@ pub struct WitnessInputFfiGuard<'a> { impl<'a> WitnessInputFfiGuard<'a> { #[must_use] - pub fn new(inner: &'a WitnessInput) -> Self { + fn new(inner: &'a WitnessInput) -> Self { let dat = ffi::ConstBytes { data: inner.dat.as_ptr(), size: inner.dat.len() }; let inputs_json = CString::new(inner.inputs_json.clone()).expect("CString::new failed").into_raw(); let ffi = ffi::WitnessInput { dat, inputs_json }; diff --git a/rust/logos-blockchain-circuits-types/src/ffi/status.rs b/rust/logos-blockchain-circuits-types/src/ffi/status.rs index d4f2395..627c08b 100644 --- a/rust/logos-blockchain-circuits-types/src/ffi/status.rs +++ b/rust/logos-blockchain-circuits-types/src/ffi/status.rs @@ -1,4 +1,3 @@ -use std::cmp::PartialEq; use std::ffi::c_char; #[repr(C)]