Есть ли способ условно компилировать атрибуты 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) он кажется нечистым - хакерский способ обойти эту проблему.
Мне было интересно, есть ли у других предложения, которые я мог бы использовать или вещи, которые они использовали, так как это выглядит довольно желательным поведением.