我尝试在Deno的WASM项目中的一个函数中提取和操作一个日期数组
rust函数无法编译。如何操作Date并转换它?
有人有Rust + Deno库的示例库/链接吗?
货物清单
[dependencies]
wasm-bindgen = "=0.2.87"
time = { version = "0.3", features = ["parsing", "macros"] }
js-sys = "0.3.64"
字符串
mod.ts
import { instantiate } from "./lib/rs_lib.generated.js";
const { DateArrayToString } = await instantiate();
console.log(DateArrayToString( [new Date(2015, 11, 1 ), new Date(2016, 7, 1 ), new Date(2016, 7, 19 )]))
型
库文件
use wasm_bindgen::prelude::*;
use js_sys::Array;
use js_sys::Date;
#[wasm_bindgen]
pub fn DateArrayToString(arr:Array) -> JsString {
let result : JsString;
for i in 0..arr.length() {
// problem is here
let d : Date = arr.get(i).as_ref();
// Concat
result = result.concat(d.to_string());
}
return result;
}
型
1条答案
按热度按时间zzzyeukh1#
您当前的实现存在多个问题。您目前面临的编译错误是因为类型不匹配。
您可以通过将
JsValue
转换为js_sys::Date
来修复此问题,如下所示:字符串
这将导致另一个编译错误,因为
result
可能未初始化。这可以像这样修复:型
然后你需要使
result
可变,因为它在循环中被覆盖:型
最后,你需要借用,因为
concat
方法期望借用它的参数:型
因此,具有最小更改的完整固定代码看起来像这样:
型
然而,这是不必要的复杂,违反了一些常见的生 rust 标准,这就是为什么我会建议目标是类似下面发布的代码。
改进代码:
型