如何在没有内存复制的情况下将 JS TypedArray 用作 Rust BufRead/Read?
How to use JS TypedArray as Rust BufRead/Read without memory copying?
我需要 Uint8Array
的形式 BufRead
or Read
。
我可以使用 to_vec
之类的东西复制整个内存并构建某种类型的 BufRead
/Read
但我不想这样做,因为我正在处理的数组可以很大 (50~100mb)
我想为了做到这一点,我必须获得可变连续内存块的地址,可能是 *mut [u8]
类型。 (我还不熟悉 Rust,所以语法可能不正确,但希望你能理解)。
但是我无法从 Uint8Array
doc.
中找到合适的方法
可能吗?如果可以,我该怎么做?
您必须复制数据。 WebAssembly 不能直接访问 JavaScript 环境中的内存,必须复制过来。使用 to_vec
是正确的方法。
我需要 Uint8Array
的形式 BufRead
or Read
。
我可以使用 to_vec
之类的东西复制整个内存并构建某种类型的 BufRead
/Read
但我不想这样做,因为我正在处理的数组可以很大 (50~100mb)
我想为了做到这一点,我必须获得可变连续内存块的地址,可能是 *mut [u8]
类型。 (我还不熟悉 Rust,所以语法可能不正确,但希望你能理解)。
但是我无法从 Uint8Array
doc.
可能吗?如果可以,我该怎么做?
您必须复制数据。 WebAssembly 不能直接访问 JavaScript 环境中的内存,必须复制过来。使用 to_vec
是正确的方法。