Struct ComputationRef
pub struct ComputationRef<'template, 'a> {
    pub template: ExprComputation<'template>,
    pub arg_interpretation: &'a [Arg],
    pub consts: &'a [i128],
}Expand description
The computation type shared between SynthesizedComputation, ExprComputation and ExpressionComputation.
Fields§
§template: ExprComputation<'template>The expression used.
arg_interpretation: &'a [Arg]The argument interpretation.
consts: &'a [i128]The constants used in the arguments.
Implementations§
§impl<'template, 'a> ComputationRef<'template, 'a>
 
impl<'template, 'a> ComputationRef<'template, 'a>
pub fn new(
    template: ExprComputation<'template>,
    arg_interpretation: &'a [Arg],
) -> Self
pub fn new( template: ExprComputation<'template>, arg_interpretation: &'a [Arg], ) -> Self
Creates a new computation reference that does not use any constants.
pub fn output_encoding(&self) -> OutputEncoding
pub fn output_encoding(&self) -> OutputEncoding
Returns the output encoding of the computation.
pub fn output_type(&self) -> IoType
pub fn output_type(&self) -> IoType
Returns the output type of the computation.
pub fn to_expression_computation(&self) -> ExpressionComputation
pub fn to_expression_computation(&self) -> ExpressionComputation
Creates an owned ExpressionComputation from the computation.
pub fn expr_computation(&self) -> &ExprComputation<'template>
pub fn expr_computation(&self) -> &ExprComputation<'template>
Returns the expression of this computation.
Trait Implementations§
§impl AsComputationRef for ComputationRef<'_, '_>
 
impl AsComputationRef for ComputationRef<'_, '_>
§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<'template, 'a> Clone for ComputationRef<'template, 'a>
 
impl<'template, 'a> Clone for ComputationRef<'template, 'a>
§fn clone(&self) -> ComputationRef<'template, 'a>
 
fn clone(&self) -> ComputationRef<'template, 'a>
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 ComputationRef<'_, '_>
 
impl Computation for ComputationRef<'_, '_>
§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<'template, 'a> Debug for ComputationRef<'template, 'a>
 
impl<'template, 'a> Debug for ComputationRef<'template, 'a>
§impl<'template, 'a> PartialEq for ComputationRef<'template, 'a>
 
impl<'template, 'a> PartialEq for ComputationRef<'template, 'a>
impl<'template, 'a> StructuralPartialEq for ComputationRef<'template, 'a>
Auto Trait Implementations§
impl<'template, 'a> Freeze for ComputationRef<'template, 'a>
impl<'template, 'a> RefUnwindSafe for ComputationRef<'template, 'a>
impl<'template, 'a> Send for ComputationRef<'template, 'a>
impl<'template, 'a> Sync for ComputationRef<'template, 'a>
impl<'template, 'a> Unpin for ComputationRef<'template, 'a>
impl<'template, 'a> UnwindSafe for ComputationRef<'template, 'a>
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<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