Struct SynthesizedComputation
pub struct SynthesizedComputation { /* private fields */ }
Expand description
A synthesized computation.
Implementations§
§impl SynthesizedComputation
impl SynthesizedComputation
pub fn new(
expr: Expression,
arg_interpretation: Vec<Arg>,
consts: Vec<i128>,
output_encoding: OutputEncoding,
output_type: IoType,
) -> Self
pub fn new( expr: Expression, arg_interpretation: Vec<Arg>, consts: Vec<i128>, output_encoding: OutputEncoding, output_type: IoType, ) -> Self
Creates a new SynthesizedComputation
.
pub fn always_false() -> Self
pub fn always_false() -> Self
Returns a computation that always returns 0
.
pub fn always_true() -> Self
pub fn always_true() -> Self
Returns a computation that always returns 1
.
pub fn output_type(&self) -> IoType
pub fn output_type(&self) -> IoType
Returns the output type of the computation.
pub fn output_encoding(&self) -> OutputEncoding
pub fn output_encoding(&self) -> OutputEncoding
Returns the output encoding of the computation.
pub fn set_output_encoding(&mut self, output_encoding: OutputEncoding)
pub fn set_output_encoding(&mut self, output_encoding: OutputEncoding)
Replaces the output encoding of the computation with output_encoding
.
Trait Implementations§
§impl AsComputationRef for SynthesizedComputation
impl AsComputationRef for SynthesizedComputation
§fn as_internal(&self) -> ComputationRef<'_, '_>
fn as_internal(&self) -> ComputationRef<'_, '_>
Return a
ComputationRef
.§fn to_synthesized_computation(&self) -> SynthesizedComputation
fn to_synthesized_computation(&self) -> SynthesizedComputation
Return an owned
SynthesizedComputation
.§fn arg_interpretation(&self) -> &[Arg]
fn arg_interpretation(&self) -> &[Arg]
Returns the argument interpretations of the computation.
§fn if_zero<A: AsComputationRef, B: AsComputationRef>(
&self,
if_zero: &A,
if_nonzero: &B,
) -> SynthesizedComputation
fn if_zero<A: AsComputationRef, B: AsComputationRef>( &self, if_zero: &A, if_nonzero: &B, ) -> SynthesizedComputation
Returns a new expression that returns
if_zero
if the current expression is equal to 0
, and returns if_nonzero
otherwise.§fn chain(&self, other: &impl AsComputationRef) -> SynthesizedComputationwhere
Self: Debug,
fn chain(&self, other: &impl AsComputationRef) -> SynthesizedComputationwhere
Self: Debug,
Concatenates the operations of the two computations.
In and of itself, this produces a computation that ends with two values on the evaluation stack.
The last value is normally popped and returned, which would be the result of
other
. Read more§fn and(&self, other: &SynthesizedComputation) -> SynthesizedComputationwhere
Self: Debug,
fn and(&self, other: &SynthesizedComputation) -> SynthesizedComputationwhere
Self: Debug,
Returns a computation that computes the bitwise AND of both computations.
§fn or(&self, other: &SynthesizedComputation) -> SynthesizedComputationwhere
Self: Debug,
fn or(&self, other: &SynthesizedComputation) -> SynthesizedComputationwhere
Self: Debug,
Returns a computation that computes the bitwise OR of both computations.
§fn not(&self) -> SynthesizedComputation
fn not(&self) -> SynthesizedComputation
Returns a computation that computes the bitwise NOT of the computation.
§fn not_crop(&self) -> SynthesizedComputation
fn not_crop(&self) -> SynthesizedComputation
Returns a computation that computes the bitwise NOT of the computation, and then crops the result to 1 bit.
§impl Clone for SynthesizedComputation
impl Clone for SynthesizedComputation
§fn clone(&self) -> SynthesizedComputation
fn clone(&self) -> SynthesizedComputation
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 more§impl Computation for SynthesizedComputation
impl Computation for SynthesizedComputation
§fn evaluate<V: AsValue>(&self, inputs: &[V]) -> OwnedValue
fn evaluate<V: AsValue>(&self, inputs: &[V]) -> OwnedValue
Computes the output of the semantics, given
inputs
.§fn compare_eq<V: AsValue>(&self, inputs: &[V], expected: Value<'_>) -> bool
fn compare_eq<V: AsValue>(&self, inputs: &[V], expected: Value<'_>) -> bool
Returns true if
expected
matches the output of the computation.
This function can be more efficient than manually comparing the result of self.evaluate(..)
.
For example, we can avoid allocating a Vec
for OwnedValue::Bytes
results.§fn display<'a, S: AsRef<str>>(
&'a self,
input_names: &'a [S],
) -> impl Display + Debug + 'a
fn display<'a, S: AsRef<str>>( &'a self, input_names: &'a [S], ) -> impl Display + Debug + 'a
Returns a struct that is suitable for printing, which uses
input_names
in place of the inputs.§fn used_input_indices(&self) -> Vec<usize>
fn used_input_indices(&self) -> Vec<usize>
The indices of all inputs used in the computation.
§fn remap_inputs(&mut self, map: &[Option<usize>])
fn remap_inputs(&mut self, map: &[Option<usize>])
Remaps the input indices, such that
new_index = map[old_index].unwrap_or(old_index)
.§fn is_identity(&self) -> bool
fn is_identity(&self) -> bool
Returns true when the computation is the identity function.
This function may under-approximate: it does not necessarily have to return true in all cases. Read more
§impl Debug for SynthesizedComputation
impl Debug for SynthesizedComputation
§impl<'de> Deserialize<'de> for SynthesizedComputation
impl<'de> Deserialize<'de> for SynthesizedComputation
§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
§impl Hash for SynthesizedComputation
impl Hash for SynthesizedComputation
§impl JsonSchema for SynthesizedComputation
impl JsonSchema for SynthesizedComputation
§fn schema_name() -> String
fn schema_name() -> String
The name of the generated JSON Schema. Read more
§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
Whether JSON Schemas generated for this type should be re-used where possible using the
$ref
keyword. Read more§impl PartialEq for SynthesizedComputation
impl PartialEq for SynthesizedComputation
§impl Serialize for SynthesizedComputation
impl Serialize for SynthesizedComputation
impl Eq for SynthesizedComputation
impl StructuralPartialEq for SynthesizedComputation
Auto Trait Implementations§
impl Freeze for SynthesizedComputation
impl RefUnwindSafe for SynthesizedComputation
impl Send for SynthesizedComputation
impl Sync for SynthesizedComputation
impl Unpin for SynthesizedComputation
impl UnwindSafe for SynthesizedComputation
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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>
Converts
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>
Converts
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