[][src]Trait flow_impl::Implementation

pub trait Implementation: RefUnwindSafe + UnwindSafe + Sync + Send + Debug {
    fn run(
        &self,
        inputs: &[Value]
    ) -> (Result<Option<Value>, RuntimeError>, RunAgain); }

An implementation runs with an array of inputs and returns a value (or null) and a bool indicating if it should be ran again.

Any 'implementation' of a function must implement this trait

Examples

Here is an example implementation of this trait:

use flow_impl::{Implementation, RUN_AGAIN, RunAgain, RuntimeError};
use serde_json::Value;
use serde_json::json;

#[derive(Debug)]
pub struct Compare;

/*
    A compare operator that takes two numbers and outputs the comparisons between them
*/
impl Implementation for Compare {
    fn run(&self, mut inputs: &[Value]) -> (Result<Option<Value>, RuntimeError>, RunAgain) {
        let left = inputs[0].as_i64().unwrap();
        let right = inputs[1].as_i64().unwrap();

        let output = json!({
                    "equal" : left == right,
                    "lt" : left < right,
                    "gt" : left > right,
                    "lte" : left <= right,
                    "gte" : left >= right
                });

        (Ok(None), RUN_AGAIN)
    }
}

Required methods

fn run(
    &self,
    inputs: &[Value]
) -> (Result<Option<Value>, RuntimeError>, RunAgain)

The run method is used to execute the implementation

Loading content...

Implementors

Loading content...