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