oxide_eval 0.1.2

Oxide Eval is a simple Javascript Evaluator based on oxc.
Documentation
use anyhow::Result;
use serde_json::Value;

use crate::util::{number_from_f64, value_to_number};

pub fn unary_function<F>(value: Value, f: F) -> Result<Value>
where
    F: Fn(f64) -> f64,
{
    let value = value_to_number(value)?;
    let result = f(value);
    Ok(Value::Number(number_from_f64(result)?))
}

pub fn binary_function<F>(value: Value, second: Value, f: F) -> Result<Value>
where
    F: Fn(f64, f64) -> f64,
{
    let left = value_to_number(value)?;
    let right = value_to_number(second)?;
    let result = f(left, right);
    Ok(Value::Number(number_from_f64(result)?))
}