Struct ExpressionComputation
pub struct ExpressionComputation { /* private fields */ }Expand description
A computation using an Expression.
The arguments for the Expression are pre-processed, and he result of the Expression is interpreted using an output encoding.
Implementations§
§impl ExpressionComputation
 
impl ExpressionComputation
pub fn new(
    expr: Expression,
    arg_interpretation: ArrayVec<Arg, 8>,
    output_encoding: OutputEncoding,
    output_type: IoType,
) -> Self
pub fn new( expr: Expression, arg_interpretation: ArrayVec<Arg, 8>, output_encoding: OutputEncoding, output_type: IoType, ) -> Self
Creates a new ExpressionComputation.
pub fn set_output_encoding(&mut self, output_encoding: OutputEncoding)
pub fn set_output_encoding(&mut self, output_encoding: OutputEncoding)
Replaces the output encoding with output_encoding.
pub fn always_false(output_type: IoType) -> Self
pub fn always_false(output_type: IoType) -> Self
Creates an ExpressionComputation that always returns 0i128.
Trait Implementations§
§impl AsComputationRef for ExpressionComputation
 
impl AsComputationRef for ExpressionComputation
§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 ExpressionComputation
 
impl Clone for ExpressionComputation
§fn clone(&self) -> ExpressionComputation
 
fn clone(&self) -> ExpressionComputation
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 ExpressionComputation
 
impl Computation for ExpressionComputation
§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 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 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 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 ExpressionComputation
 
impl Debug for ExpressionComputation
§impl<'de> Deserialize<'de> for ExpressionComputation
 
impl<'de> Deserialize<'de> for ExpressionComputation
§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 ExpressionComputation
 
impl Hash for ExpressionComputation
§impl JsonSchema for ExpressionComputation
 
impl JsonSchema for ExpressionComputation
§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 ExpressionComputation
 
impl PartialEq for ExpressionComputation
§impl Serialize for ExpressionComputation
 
impl Serialize for ExpressionComputation
impl Eq for ExpressionComputation
impl StructuralPartialEq for ExpressionComputation
Auto Trait Implementations§
impl Freeze for ExpressionComputation
impl RefUnwindSafe for ExpressionComputation
impl Send for ExpressionComputation
impl Sync for ExpressionComputation
impl Unpin for ExpressionComputation
impl UnwindSafe for ExpressionComputation
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,
§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