不稳定的 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"]