У меня есть 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]
pub struct Board {/* ... */}
#[wasm_bindgen]
pub struct Player {/* ... */}
Все 3 структуры wasm_bindgen
, и типы не могут быть помечены как wasm_bindgen
.Однако типы - это просто функции, принимающие структуры и возвращающие void
Когда я добавляю wasm_bindgen
к Game
impl
, я получаю следующую ошибку
--> src/game.rs:16:1
|
16 | #[wasm_bindgen]
| ^^^^^^^^^^^^^^^ the trait `wasm_bindgen::convert::traits::FromWasmAbi` is not implemented for `fn(board::Board)`
Это потому, что new
имеет следующую подпись
pub fn new(on_move: OnMoveEvent, on_game_over: OnGameOverEvent) -> Game
Мне показалось, что должно быть просто переводить типы, поскольку они являются функциями, принимающими структуры wasm_bindgen
, но, похоже, это не так
Это ошибка или я что-то упустил?
Полный код здесь .