不稳定 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,需要箱子明确选择加入这些降低的稳定性保证才能使用这些 API。具体来说,这些 API 不遵循语义化版本控制,并且可能在 WebIDL 发生变化时随时中断。

箱子可以通过在编译时传递 `cfg` 标志 `web_sys_unstable_apis` 来选择加入不稳定 API。通常使用 `RUSTFLAGS` 环境变量来执行此操作。例如

RUSTFLAGS=--cfg=web_sys_unstable_apis cargo run