gpt4 book ai didi

rust - 不能使用 NEON JsArray : This function takes 3 parameters but 2 were supplied

转载 作者:行者123 更新时间:2023-11-29 08:14:19 30 4
gpt4 key购买 nike

我正在学习如何使用 NEON ,但我什么都不懂。如果我尝试执行此代码:

#[macro_use]
extern crate neon;
use neon::vm::{Call, JsResult};
use neon::mem::Handle;
use neon::js::{JsInteger, JsNumber, JsString, JsObject, JsArray, JsValue, Object, Key};
use neon::js::error::{JsError, Kind};

fn test(call: Call) -> JsResult<JsArray> {
let scope = call.scope;
let js_arr: Handle<JsArray> = try!(try!(call.arguments.require(scope, 1)).check::<JsArray>());

js_arr.set(0, JsNumber::new(scope, 1000));

Ok(js_arr)
}

register_module!(m, {
m.export("test", test)
});

我在调用 js_arr.set 时遇到此错误:此函数需要 3 个参数,但提供了 2 个参数。

我不明白为什么,因为它是一个 JsArray。甚至 Racer 告诉我 set 方法有 2 个参数。无论如何,js_arr.set 按以下顺序接受 3 个参数:&mut boolneon::macro_internal::runtime::raw::Localneon::macro_internal::runtime::raw::Local

这是怎么回事?我不明白 JsArray 是如何工作的。

最佳答案

作为paulsevere says on a GitHub issue for Neon , 导入 neon::js::Object。另外,不要导入Key,它也提供了一个set方法:

#[macro_use]
extern crate neon;

use neon::vm::{Call, JsResult};
use neon::js::{Object, JsArray, JsInteger, JsObject, JsNumber};

fn make_an_array(call: Call) -> JsResult<JsArray> {
let scope = call.scope; // the current scope for rooting handles
let array = JsArray::new(scope, 3);
array.set(0, JsInteger::new(scope, 9000))?;
array.set(1, JsObject::new(scope))?;
array.set(2, JsNumber::new(scope, 3.14159))?;
Ok(array)
}

register_module!(m, {
m.export("main", make_an_array)
});

这将创建一个全新的数组。如果你想接受一个数组作为函数的第一个参数然后修改它,这是可行的:

#[macro_use]
extern crate neon;

use neon::vm::{Call, JsResult};
use neon::js::{Object, JsArray, JsInteger, JsUndefined};
use neon::mem::Handle;

fn hello(call: Call) -> JsResult<JsUndefined> {
let scope = call.scope;
let js_arr: Handle<JsArray> = call.arguments.require(scope, 0)?.check::<JsArray>()?;

js_arr.set(0, JsInteger::new(scope, 1000))?;

Ok(JsUndefined::new())
}

register_module!(m, {
m.export("hello", hello)
});

关于rust - 不能使用 NEON JsArray : This function takes 3 parameters but 2 were supplied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521530/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com