pub struct LocalClientOutput {
pub client_slot: u64,
pub values: Vec<Value>,
pub raw: Vec<u64>,
}Expand description
A client’s reconstructed output values, received via send_to_client and
reconstructed by the off-chain client — the actual client-side result, not
a public reveal to the compute nodes.
values are decoded through the loaded program’s client-IO manifest, so a
1-bit secret int comes back as Value::Bool, a wider secret int as
Value::I64, an unsigned secret int as Value::U64, and a fixed-point
share as Value::Float. Output positions the manifest does not describe
(e.g. a developer-specified count with no static schema) fall back to
Value::U64. The untyped reconstructed field values remain available via
raw for callers that need them.
Fields§
§client_slot: u64§values: Vec<Value>§raw: Vec<u64>Implementations§
Source§impl LocalClientOutput
impl LocalClientOutput
Sourcepub fn bytes(&self) -> Vec<u8> ⓘ
pub fn bytes(&self) -> Vec<u8> ⓘ
Pack boolean outputs into bytes, LSB-first within each byte (output bit
i becomes bit i % 8 of byte i / 8). This is the inverse of the
LSB-first bit layout AES and other bit-decomposed circuits use, so a
128-bit ciphertext block round-trips straight back to its 16 bytes.
Non-boolean outputs are treated as set when non-zero; the trailing partial byte (when the output count is not a multiple of 8) is zero-padded in its high bits.
Trait Implementations§
Source§impl Clone for LocalClientOutput
impl Clone for LocalClientOutput
Source§impl Debug for LocalClientOutput
impl Debug for LocalClientOutput
Source§impl PartialEq for LocalClientOutput
impl PartialEq for LocalClientOutput
impl StructuralPartialEq for LocalClientOutput
Auto Trait Implementations§
impl Freeze for LocalClientOutput
impl RefUnwindSafe for LocalClientOutput
impl Send for LocalClientOutput
impl Sync for LocalClientOutput
impl Unpin for LocalClientOutput
impl UnsafeUnpin for LocalClientOutput
impl UnwindSafe for LocalClientOutput
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<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> ⓘ
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