gpt4 book ai didi

rust - 如何使用web_sys从Rust创建一个JS字符串数组?

转载 作者:行者123 更新时间:2023-12-03 11:48:52 25 4
gpt4 key购买 nike

我正在尝试使用一个Web API,其中包含一个接受来自Rust的字符串数组的方法。

我正在使用web_sys与JS API“对话”,但是我找不到将静态字符串数组传递给它的方法。

不幸的是,在Rust中,参数的类型被错误地声明为arg: &JsValue,因此我几乎可以将任何内容传递给它,并且它仍然可以编译,但是会在浏览器中崩溃。

如何在Rust中创建可以用作&JsValue的字符串数组?

最佳答案

使用 js_sys 可以创建如下数组:

use js_sys::Array;

#[wasm_bindgen]
pub fn strings() -> Array {
let arr = Array::new_with_length(10);
for i in 0..arr.length() {
let s = JsValue::from_str(&format!("str {}", i));
arr.set(i, s);
}
arr
}

But can you give an example with string literals like ["hello"].to_array()



对于所请求的示例,您不能使用任何方法直接进行转换。因此,您必须使用一个辅助函数:

#[wasm_bindgen]
pub fn strings() -> Array {
to_array(&["str 1", "str 2"])
}

pub fn to_array(strings: &[&str] ) -> Array {

let arr = Array::new_with_length(strings.len() as u32);
for (i, s) in strings.iter().enumerate() {
arr.set(i as u32, JsValue::from_str(s));
}
arr
}

关于rust - 如何使用web_sys从Rust创建一个JS字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61660276/

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