Как я могу передать File
для чтения в контексте памяти WebAssembly?
Легко читать файл в браузере с помощью JavaScript:
<input class="file-selector" type="file" id="files" name="files[]" />
Мне удалось загрузить код WebAssembly, написанный на Rust, с ящиком stdweb , добавить прослушиватель событий в элемент DOM и запустить FileReader
:
let reader = FileReader::new();
let file_input_element: InputElement = document().query_selector(".file-selector").unwrap().unwrap().try_into().unwrap();
file_input_element.add_event_listener(enclose!( (reader, file_input_element) move |event: InputEvent| {
// mystery part
}));
В JavaScript я бы взял файл из элемента и передал его читателю, однако для API stdweb нужна следующая подпись:
pub fn read_as_array_buffer<T: IBlob>(&self, blob: &T) -> Result<(), TODO>
Я понятия не имею, как реализовать IBlob
, и я уверен, что мне не хватает чего-то очевидного в API stdweb или в моем понимании WebAssembly / Rust. Я надеялся, что есть что-то менее многословное, чем , конвертирующее материал в UTF-8 .