Описание тега wasm-bindgen

NoneWasm-bindgen - это ящик ржавчины для облегчения высокоуровневого взаимодействия между модулями WebAssembly (Wasm) и JavaScript.
2 ответа

Как создать функцию, возвращающую заемное значение?

У меня есть следующая функция как часть приложения Rust WASM для преобразования Boxзакрытие в Rust-представлении для функции JavaScript. use js_sys::Function; type Callback = Rc<RefCell<Option<Closure<FnMut()>>>>; fn to_funct…
28 дек '18 в 21:06
1 ответ

Есть ли прирост производительности при использовании web-sys вместо простого старого JavaScript?

Я использовал wasm-bindgen написать очень простое веб-приложение JS/Wasm, в котором преобразование в градациях серого (написанное на Rust) применяется к изображению, загруженному пользователем веб-приложения через <input type="file"> и отображ…
24 дек '18 в 23:33
2 ответа

Как можно обойтись без возможности экспортировать функции со временем жизни при использовании wasm-bindgen?

Я пытаюсь написать простую игру, которая запускается в браузере, и мне трудно смоделировать игровой цикл, учитывая комбинацию ограничений, наложенных браузером, rust и wasm-bindgen. Типичный игровой цикл в браузере следует такой общей схеме: functio…
26 окт '18 в 01:58
1 ответ

Можно ли сделать динамическое связывание в WebAssembly с Rust?

Я делаю полный комплект по Тьюрингу в Rust для веба, используя wasm-bindgen. Мне нужна возможность загружать произвольный код WASM из Интернета, а затем использовать функции из этого файла в моем DSL. Какая-то динамическая связь с эквивалентом dlope…
24 янв '19 в 13:45
1 ответ

Как использовать вложенные Vecs с wasm-bindgen?

Не похоже, что вложенный VecS работа с Wasm-Bindgen. Это верно? Моя цель - создать сетку Game of Life в Rust, которую я могу вернуть в виде строк, а не 1D Vec который требует JavaScript для обработки индексации. Два обходных пути, о которых я подума…
12 окт '18 в 02:54
1 ответ

Запись в файл в WebAssembly

У меня есть следующий кусок C код, который находится на крючке для компиляции в WebAssembly, # include <stdio.h> int main() { FILE *f = fopen("file.txt", "w"); if (f == NULL) { printf("Error opening file!\n"); return 0; } /* print some text */…
26 ноя '18 в 11:48
0 ответов

Есть ли способ условно компилировать атрибуты wasm_bindgen при компиляции ржавчины?

В последнее время я читаю Книгу Rust Wasm. В нем используются wasm_bindgen через #[wasm_bindgen] аннотаций. В разделе 5.5 "Отладка" упоминается следующее: Обратите внимание, что для запуска #[test] с ошибками компилятора и компоновщика, вам необходи…
22 окт '18 в 15:00
1 ответ

Как применить атрибут макроса к функции, определенной в отдельном модуле?

Я заинтересован в использовании wasm-bindgen с помощью rust-webpack-template скомпилировать код Rust в WebAssembly. Тем не менее, я бы хотел избежать прямого переноса кода на #[wasm_bindgen] Атрибут макроса напрямую, чтобы я мог отделить логику функ…
18 ноя '18 в 18:11
0 ответов

Как я могу загрузить модули WASM в webview с Rust?

Я пытаюсь разместить приложение React в webview, которое использует скомпилированный модуль Rust -> WebAssembly. Я получаю эту ошибку: Unhandled promise rejection: TypeError: URL is not valid or contains user credentials. Модуль WASM вызывается в од…
09 янв '19 в 04:14
1 ответ

Как передать массив объектов в WebAssembly и преобразовать его в вектор структур с помощью wasm-bindgen?

Можно передать массив целых чисел следующим образом: const js = import("./webassembly_rust"); let array_nums = [1,2,3,4,5,6,7,8,9]; js.then(js => { js.test( array_nums ); }); в WebAssembly и сохраните его в векторе, как это: extern crate serde_js…
13 окт '18 в 18:52
1 ответ

Недостаточно памяти Создание экземпляра WebAssembly в Cloudflare Workers

Я создаю модуль WebAssembly в Rust для использования в Cloudflare Workers, через wasm-bindgen, Модуль в целом очень простой; у него есть одна функция с именем process, который принимает в качестве входных данных два двоичных файла (представленных дв…
01 фев '19 в 19:45
2 ответа

Как вернуть закрытие Rust в JavaScript через WebAssembly?

Комментарии к closure.rs довольно хороши, однако я не могу заставить его возвращать замыкание из библиотеки WebAssembly. У меня есть такая функция: #[wasm_bindgen] pub fn start_game( start_time: f64, screen_width: f32, screen_height: f32, on_render:…
08 ноя '18 в 18:59
1 ответ

FromWasmAbi не реализовано для fn(SomeStruct), в то время как SomeStruct является #[wasm_bindgen]

У меня есть 3 структуры и два типа определены type OnMoveEvent = fn(Board) -> (); type OnGameOverEvent = fn(Player) -> (); #[wasm_bindgen] pub struct Game { on_move: OnMoveEvent, on_game_over: OnGameOverEvent, board: Board, } #[wasm_bindgen] p…
08 дек '18 в 11:49
1 ответ

Rust/Wasm: модуль не найден: ошибка: не удается разрешить 'env' в

Я пытаюсь перенести упаковщик для этого ящика в wasm. Мой текущий набор инструментов: wasm-пак WebPack wasm-bindgen Немного больше информации о системе сборки: В моем ржавом ящике (который является --lib ящик), я звоню только wasm-pack build --targe…
08 фев '19 в 18:31
3 ответа

Как свалить wasm?

Я обнаружил, что вы можете просматривать модули wasm в режиме разработчика в chrome, а также обнаружил здесь флаг chromium, однако я хочу использовать другой браузер для вывода файла wasm. Как я могу это сделать?
11 мар '19 в 23:49
1 ответ

Как сравнить значения двух JsValues ​​в коде Rust?

В JavaScript я могу сделать это так: JSON.stringify([1,2,3]) === JSON.stringify([1,2,3]) // true В Rust, скомпилированном в Wasm, я попробовал что-то вроде: #[wasm_bindgen_test] fn test_algo() { let js_array_to_sort = Array::of3(&JsValue::from(1…
14 мар '19 в 21:50
1 ответ

DOMException при горячей загрузке процессора веб-аудио рабочего места с модулями WASM из BLOB-объекта?

Я пытаюсь загрузить динамические рабочие листы Web Audio с импортом модуля WASM, перенесенного из кода C++, используя EMSCRIPTEN. Я хочу манипулировать кодом рабочих листов в памяти, используя Blob для создания объектов, вставляя их в виде модулей в…
2 ответа

Rust WebAssembly - ошибка высвобождения памяти пользовательских элементов

Мой первый WASM, созданный в Rust, выдает следующую ошибку, я понятия не имею, как отладить ее. wasm-000650c2-23:340 Uncaught RuntimeError: memory access out of bounds at dlmalloc::dlmalloc::Dlmalloc::free::h36961b6fbcc40c05 (wasm-function[23]:670) …
18 апр '19 в 07:56
0 ответов

Как обрабатывать ошибки Rust из Result как возвращаемое значение вместо исключения в JavaScript?

Я хотел бы написать JavaScript как: var [greeting, err] = wasm.hello("world"); Похоже, что если я использую стандарт Result типа, тогда мне нужно использовать try/catch: try { greeting = wasm.hello() } catch(error) { console.error(error); } Rust код…
21 апр '19 в 20:15
1 ответ

Как мне вернуть Result с JsValue с wasm_bindgen?

С помощью wasm_bindgen с serdeЯ пытаюсь вернуть JsValue для сложной структуры используют идиоматическую ржавчину. Я создал отдельный пример, чтобы проиллюстрировать ошибку, которую я вижу. объявление структуры: #[derive(Serialize)] pub struct BookSt…
22 апр '19 в 20:28