Trait flowcore::Implementation[][src]

pub trait Implementation: RefUnwindSafe + UnwindSafe + Sync + Send {
    fn run(&self, inputs: &[Value]) -> (Option<Value>, 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 flowcore::{Implementation, RUN_AGAIN, RunAgain};
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]) -> (Option<Value>, 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
                });

        (None, RUN_AGAIN)
    }
}

Required methods

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

The run method is used to execute the implementation

Loading content...

Implementors

Loading content...