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,
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