Как использовать #[wasm_bindgen] с псевдонимами типов?

Что бы я хотел сделать:

      #[wasm_bindgen]
pub type ParseError = parserange::Error;

Но компилятор Rust жалуется:

      error: #[wasm_bindgen] can only be applied to a function, struct, enum, impl, or extern block
  --> src/lib.rs:89:1
   |
89 | pub type ParseError = parserange::Error;

Я не хочу добавлять атрибут #[wasm-bindgen] в parserange.rs потому что он находится в отдельной библиотеке, которая не строится с помощью wasm.

Есть ли обходной путь?

1 ответ

Обходной путь - заключить в структуру кортежа для создания нового типа. Обратной стороной является то, что все функции, определенные на parserange::Errorкоторый вы хотите использовать, необходимо будет переопределить для вызова функции подобъекта ошибки. Тем не менее, у этого есть все преимущества создания нового типа, например, экспорт через wasm_bindgen или реализация трейтов для типа, определенного в другом ящике. Более подробную информацию можно найти здесь

Другие вопросы по тегам