You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust使用js-sandbox调用JS函数报expected pattern错误求助

问题原因

你收到的expected pattern报错是因为let *output = ...的写法不符合Rust语法规则:
let关键字的作用是声明新变量,其后必须跟随合法的变量声明模式,而你代码中的output是已经作为参数传入的&mut i32可变引用,你需要做的是给这个引用指向的内存空间赋值,不需要也不能加let关键字。

修正方案

仅需修改run_js函数中的赋值行即可:

  1. 删掉行首的let关键字
  2. 可显式指定call方法的返回类型为i32,避免类型推断出现异常

修正后的完整run_js代码如下:

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;
    // 直接解引用可变引用赋值,显式指定返回类型保证类型匹配
    *output = script.call::<i32>("fibonacci", &arg)?;
    Ok(())
}
结果验证

修改后重新运行代码,控制台会输出output: 5,与Node.js环境下直接运行main.js的输出结果一致,即可确认功能运行正常。


内容的提问来源于stack exchange,提问作者Krayfighter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:03