Найти тему
1094 подписчика

Хочется добавить пару слов о трудности взаимодействия между js и rust модулями приложения. Замечу сразу, что это не является какой-то большой и непреодолимой проблем, однако трудность имеет место быть.


Во-первых, ограниченность типов данных, которые будут передаваться между модулями. В принципе, для веб-разработчика это давно не проблема, т.к. привычка работать с клиент-серверными приложениями, де-факто, является первым навыком, который он осваивает.

Во-вторых, это особенности передачи данных из js в rust. Тут всё очень непривычно. Дело в том, что у Rust отсутствует сборщик мусора в привычном смысле, что приводит к уничтожению данных сразу по выходу из области видимости. Это выражается в том, что если какую-то структуру данных (объект) передать в экспортируемую из rust-модуля функцию - структура будет сразу же обнулена и использовать её вторично уже не выйдет. В контексте веб-приложения это очень непривычное поведение.

Всё вышеуказанное заставляет искать более надёжные пути передачи данных, при условии, что эти данные надо ещё не потерять.

Например, для управления платформой я использовал целое число с включением и выключением битов в соответствии с состояниями управления. Первый бит - флаг того, что платформа двигается; второй бит - имеет смысл, если включён первый бит: если он 0 - значит платформа едет вправо, 1 - значит влево. Ну и третий бит - если 1, то будет выстрел (выстрел происходит через такт).
1 минута