首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用web_sys从生锈中创建JS字符串数组?

如何使用web_sys从生锈中创建JS字符串数组?
EN

Stack Overflow用户
提问于 2020-05-07 22:25:49
回答 2查看 903关注 0票数 0

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

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

不幸的是,在Rust中,参数的类型被错误地声明为arg: &JsValue,所以我可以向它传递几乎任何东西,它仍然可以编译,但在浏览器中崩溃。

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

EN

回答 2

Stack Overflow用户

发布于 2020-05-08 16:03:16

这会将&[&str]转换为JsValue

代码语言:javascript
复制
fn js_array(values: &[&str]) -> JsValue {
    return JsValue::from(values.into_iter()
        .map(|x| JsValue::from_str(x))
        .collect::<Array>());
}
票数 1
EN

Stack Overflow用户

发布于 2020-05-07 22:45:54

通过使用js_sys,您可以创建如下数组:

代码语言:javascript
复制
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
}

但是你能给出一个像“

”.to_array()这样的字符串的例子吗?

对于请求的示例,您不能使用任何方法直接转换。因此,您必须使用helper函数:

代码语言:javascript
复制
#[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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61660276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档