不穩定的 API
瀏覽器實作 Web API 的部分是很常見的,即使該 API 的規格仍在撰寫中。隨著規格的持續開發,API 可能需要頻繁的變更,因此 WebIDL 相對不穩定。
這對 web-sys
造成了一些挑戰,因為這表示每當 WebIDL 變更時,web-sys
都必須進行破壞性的 API 變更。這也表示先前發佈的 web-sys
版本將會失效,因為瀏覽器 API 可能已變更以符合更新後的 WebIDL。
為了避免不穩定 API 頻繁的破壞性變更,web-sys
會透過類似以下的屬性來隱藏所有不穩定的 API
# #![allow(unused_variables)] #fn main() { #[cfg(web_sys_unstable_apis)] pub struct Foo; #}
透過屬性隱藏不穩定的 API,crate 必須明確選擇加入這些降低的穩定性保證,才能使用這些 API。具體來說,這些 API 不遵循 semver,並且可能會在 WebIDL 變更時隨時中斷。
Crate 可以透過傳遞 cfg
標誌 web_sys_unstable_apis
,在編譯時選擇加入不穩定的 API。
通常使用 RUSTFLAGS
環境變數來執行此操作。例如
RUSTFLAGS=--cfg=web_sys_unstable_apis cargo run
或者,您可以建立cargo 設定檔,以設定其rustflags
在 ./.cargo/config.toml
中
[build]
rustflags = ["--cfg=web_sys_unstable_apis"]