rust - 当目标拱门是 WASM 时默认启用 Cargo 功能?
问题描述
我的板条箱的 Cargo.toml 的一部分:
[features]
wasm = ["ed25519-dalek/nightly", "rand/wasm-bindgen", "js-sys"]
当 crate 在另一个项目中使用并且明确选择了“wasm”功能时,这是有效的。
我只想在目标拱门是 WASM 时自动启用此功能。我试着添加这个:
#[cfg(target_arch = "wasm32")]
default = ["wasm"]
当我为 WASM 以外的目标进行编译时,默认包含“wasm”,如何仅当目标为 WASM 时才将“wasm”设为默认?
解决方案
您只能拥有特定于目标的依赖项,而不是特定于目标的功能。这是一个自 2015 年以来不幸打开的已知错误。
人们希望这种语法得到支持,但目前没有任何计划可以使这项工作:
[target.'cfg(target_arch = "wasm32")'.features]
default = ["ed25519-dalek/nightly", "rand/wasm-bindgen", "js-sys"]
作为一个丑陋的解决方法,您可以创建另一个依赖于您的 crate 的 crate并让用户使用这个新的 crate:
[target.'cfg(target_arch = "wasm32")'.dependencies.your_crate]
version = "1.0.0"
features = ["wasm"]
推荐阅读
- testing - JMeterLib 机器人框架 - 将参数作为关键字传递
- android - 如何在房间道查询中连接字符串?
- angular - 如何使用 angular 6 和 RxJs 6 从订阅 forkJoin 中返回值?
- c# - 为 WallType 设置新的复合结构不会更新 CompoundStructureLayers 的 LayerID
- c++ - 使用基类引用而不是指针时意外的虚函数调度
- android - 是否可以创建一个派生自 LinearSmoothScroller 的类,该类添加了一个属性以在覆盖方法之一中使用其值
- javascript - 为什么我的 POST 请求不更新正在服务的 .json 或 .js 文件?
- c# - Excel 版本未匹配异常
- java - 获取“无法捕获任务':compileJava'的输入文件的快照”
- c# - 不包含“ToPagedList”的定义