我正在尝试访问通过输入字段上传的文件内容的迭代器。
我可以通过 web-sys 将 JS 文件传递到 Wasm 中,但我一生都无法弄清楚如何访问 Rust 中传递的文件的长度和名称之外的任何内容。
我想我可以将整个文件作为 ByteArray 传递到 Wasm 中并对其进行迭代,但最好我想直接迭代文件内容而不进行复制,因为文件本身会很大(~1 GB)。
我在 Mozilla JS 文档中发现,我应该能够访问底层文件 blob,通过该.stream()方法从中获取 ReadableStream,并从中获取应该能够迭代的 Reader。但在 web-sys 中,.getReader()ReadableStream 的方法返回一个简单的 JSValue,我无法用它做任何有用的事情。
我是否在这里遗漏了一些东西,或者这个功能只是在网络系统中丢失了,还是有其他方法可以做到这一点?也许在 JS 中创建迭代器并将其传递给 Rust?
我试图了解 Win32 API 如何处理指针所有权。
我现在正在查看的具体示例是指向我传递给 API 以及从 API 获取的字符串的指针的所有权。
以SetWindowText函数为例。它需要一个LPCSTR, 一个指向空终止宽字符串的指针。
另一个例子是RegisterClass函数和WNDCLASS结构体的结合。该RegisterClass函数接受一个指向WNDCLASS结构的指针,该WNDCLASS结构再次包含LPCSTR指向类名的 a。
API 是否拥有该内存的所有权,还是我需要处理释放它?
我似乎不太可能拥有所有权,但我对 C/C++ 约定的了解不足以肯定地说,而且我找不到任何关于 API 所有权约定的文档。