Referencia de Rust con js-sandbox
Estoy escribiendo una calculadora en Rust que utiliza js-sandbox para permitir el scripting de funciones personalizadas en JavaScript por parte del usuario.
Tengo una función que toma una referencia mutable de un “i32” y devuelve una “Option” en caso de error, la llamo “run_js”.
Quiero crear una variable “js_out” y pasar la referencia a “run_js”, e imprimirlo para demostrar que la función se ejecutó correctamente.
También tengo un archivo “main.js” con la función “fibonacci” que he probado y que funciona con nodejs.
Estoy recibiendo el error: let *output = script.call("fibonacci", &arg)?; expected pattern
main.rs
use js_sandbox::{Script, AnyError};
fn run_js(sname: &str, output: &mut i32) -> Result<(), AnyError> {
let mut script = Script::from_file(sname).expect("File can be loaded");
let arg = 6;
let *output = script.call("fibonacci", &arg)?;
Ok(())
}
fn main() -> Result<(), AnyError> {
println!("SCalc version 0.1.0");
let mut js_out: i32 = 0;
run_js("src/main.js", &mut js_out)?;
println!("output: {}", js_out);
Ok(())
}
main.js
function fibonacci(length, startNums=[0, 1]) {
for (var i = 1; i < length-1; i++) {
startNums.push(startNums[i-1]+startNums[i]);
}
return startNums[startNums.length-1];
}
console.log(fibonacci(6));
davy.ai
Solución:
En
main.rs
, cambialet *output = script.call("fibonacci", &arg)?;
alet output = script.call("fibonacci", &arg)?;
para remover el*
antes deoutput
.