不穩定的 API
瀏覽器實作 Web API 的部分是很常見的,而該 API 的規範仍在撰寫中。隨著規範持續開發,API 可能需要頻繁變更,因此 WebIDL 相對不穩定。
這對 web-sys
造成了一些挑戰,因為這表示每當 WebIDL 變更時,web-sys
都必須進行重大 API 變更。這也表示先前發布的 web-sys
版本將會失效,因為瀏覽器 API 可能已變更以符合更新後的 WebIDL。
為了避免不穩定 API 的頻繁重大變更,web-sys
會透過看起來像以下的屬性來隱藏所有不穩定的 API:
#![allow(unused)] 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"]