我收到代码错误“RuntimeError: unreachable in rustwasm”
错误信息:
Uncaught (in promise) RuntimeError: unreachable
at __rust_start_panic (http://127.0.0.1:8080/wasm_bg.wasm:wasm-function[346]:0x274ec)
at rust_panic (http://127.0.0.1:8080/wasm_bg.wasm:wasm-function[254]:0x26d0b)
at std::panicking::rust_panic_with_hook::hb07b303a83b6d242 (http://127.0.0.1:8080/wasm_bg.wasm:wasm-function[168]:0x24a47)
at rust_begin_unwind (http://127.0.0.1:8080/wasm_bg.wasm:wasm-function[228]:0x267ed)
at core::panicking::panic_fmt::h62f7e605cdf65d83
at core::panicking::panic_bounds_check::ha440f41d0e4eca5f
at virtualdom::parseNode::h9ba47b7b20126d66
at run ()
at init ()
Run Code Online (Sandbox Code Playgroud)
我有以下问题?
parseNode函数吗?dm.children[i]溢出了吗?或者在 wasm 后台运行时删除了一些函数?panic::set_hook(Box::new(console_error_panic_hook::hook));但没有多大帮助!我应该如何调试此类错误?问题是,dm.children.len()在1while 循环的第一次迭代之后,然后i就变得1越界,从而触发恐慌1。
解决此问题的最简单方法是将 while 循环替换为 for 循环,并匹配Node::Elementfor 循环内的变体。
for child in dm.children {
if let Node::Element(x) = child {
let nod = Node1 {
tag: x.name,
props: x.classes,
children: x.children,
};
println!("{:?}", nod.tag);
createElement(&nod);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您没有处理createElement()返回的结果。
由于您遇到问题的这个特定代码实际上没有任何特定的 WASM/Web 相关内容。然后,您可以将该代码编译为常规 Rust 二进制文件以进行测试,这将为您提供更多有用的错误并简化测试。
| 归档时间: |
|
| 查看次数: |
8857 次 |
| 最近记录: |