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

В последнее время я читаю Книгу Rust Wasm. В нем используются wasm_bindgen через #[wasm_bindgen] аннотаций. В разделе 5.5 "Отладка" упоминается следующее:

Обратите внимание, что для запуска #[test] с ошибками компилятора и компоновщика, вам необходимо закомментировать биты crate-type = "cdylib" в wasm-game-of-life/Cargo.toml.

Он также рекомендует закомментировать #[wasm-bindgen] атрибуты методов / структур в следующем разделе при выполнении стендовых тестов.

Чтобы добавить к этому еще более сложную часть, есть такие разделы в сложных приложениях wasm:

#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(js_namespace = performance)]
    fn now() -> f64;
}

Мне также нужно было закомментировать эти разделы, чтобы заставить код работать естественным образом.

Это, конечно, кажется супер утомительным. У меня вопрос, есть ли способ сделать эту работу автоматически, с помощью компилятора (или с помощью сценария Cargo), чтобы я мог указать такую ​​команду, как cargo build или же cargo test, который будет компилироваться изначально (с отключенными атрибутами), и, возможно, что-то вроде cargo build --feature=wasm построить с включенным wasm_bindgen.

Я думал о написании отдельного build.rs скрипт, который копирует все источники и Cargo.toml Файлы в промежуточный каталог (т. е. ваш исходный код не был изменен на месте), сам комментирует, а затем строит из этого источника. Конечно, проблема здесь в том, что 1) скрипт сборки редактирует ваш исходный код, поэтому номера строк будут отключены, и 2) он кажется нечистым - хакерский способ обойти эту проблему.

Мне было интересно, есть ли у других предложения, которые я мог бы использовать или вещи, которые они использовали, так как это выглядит довольно желательным поведением.

0 ответов

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