jsandbox 0.7.0

JavaScript sandbox using deno runtime.
Documentation
use deno_core::{error, serde, serde_json};

pub trait Args {
    fn to_string(self) -> Result<String, error::AnyError>;
}

impl Args for () {
    fn to_string(self) -> Result<String, error::AnyError> {
        Ok(String::new())
    }
}

macro_rules! args_impl {
  ($($var:ident),+) => {
    #[allow(non_snake_case)]
    impl<$($var: serde::Serialize),+> Args for ($($var),+,) {
      fn to_string(self) -> Result<String, error::AnyError> {
        let ($($var),+,) = self;
        Ok([
          $(serde_json::to_value($var)?.to_string()),+
        ].join(","))
      }
    }
  };
}

args_impl!(T0);
args_impl!(T0, T1);
args_impl!(T0, T1, T2);
args_impl!(T0, T1, T2, T3);
args_impl!(T0, T1, T2, T3, T4);
args_impl!(T0, T1, T2, T3, T4, T5);
args_impl!(T0, T1, T2, T3, T4, T5, T6);
args_impl!(T0, T1, T2, T3, T4, T5, T6, T7);
args_impl!(T0, T1, T2, T3, T4, T5, T6, T7, T8);
args_impl!(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9);