小编Eri*_*lze的帖子

如何迭代大型输入文件?

我正在尝试访问通过输入字段上传的文件内容的迭代器。

我可以通过 web-sys 将 JS 文件传递​​到 Wasm 中,但我一生都无法弄清楚如何访问 Rust 中传递的文件的长度和名称之外的任何内容。

我想我可以将整个文件作为 ByteArray 传递到 Wasm 中并对其进行迭代,但最好我想直接迭代文件内容而不进行复制,因为文件本身会很大(~1 GB)。

我在 Mozilla JS 文档中发现,我应该能够访问底层文件 blob,通过该.stream()方法从中获取 ReadableStream,并从中获取应该能够迭代的 Reader。但在 web-sys 中,.getReader()ReadableStream 的方法返回一个简单的 JSValue,我无法用它做任何有用的事情。

我是否在这里遗漏了一些东西,或者这个功能只是在网络系统中丢失了,还是有其他方法可以做到这一点?也许在 JS 中创建迭代器并将其传递给 Rust?

rust webassembly wasm-bindgen

5
推荐指数
1
解决办法
2518
查看次数

Win32 API 中的指针所有权

我试图了解 Win32 API 如何处理指针所有权。

我现在正在查看的具体示例是指向我传递给 API 以及从 API 获取的字符串的指针的所有权。

SetWindowText函数为例。它需要一个LPCSTR, 一个指向空终止宽字符串的指针。

另一个例子是RegisterClass函数和WNDCLASS结构体的结合。该RegisterClass函数接受一个指向WNDCLASS结构的指针,该WNDCLASS结构再次包含LPCSTR指向类名的 a。

API 是否拥有该内存的所有权,还是我需要处理释放它?

我似乎不太可能拥有所有权,但我对 C/C++ 约定的了解不足以肯定地说,而且我找不到任何关于 API 所有权约定的文档。

c c++ windows winapi pointers

0
推荐指数
1
解决办法
81
查看次数

标签 统计

c ×1

c++ ×1

pointers ×1

rust ×1

wasm-bindgen ×1

webassembly ×1

winapi ×1

windows ×1