我有一个Rust库crate,我只在Linux上使用它,但我不知道它应该在Windows上运行的任何原因;但是其中一个例子是特定于Unix的,因此它不能在AppVeyor上构建。
原因是其中一个示例使用了仅依赖Unix的依赖项(Termion),因此当我使用an AppVeyor template时,它无法构建该dev依赖项。< / p>
所以我使依赖条件成为条件:
[target.'cfg(unix)'.dev-dependencies]
termion = "1.0"
到目前为止一切顺利,但当然现在这个例子在extern crate termion
失败了。
我需要的是不要在非类Unix目标上构建该示例。我希望有类似的东西:
[[target.'cfg(unix)'.example]]
name = "foo"
可行,但我明白了:
warning: unused manifest key: target.cfg(unix).example
error: no example target named `foo`
另一个有前途的方法是Cargo&#39; required-features,但截至编写it's apparently not in stable Cargo时,这意味着它无法帮助我检查它是否适用于Windows上的稳定Rust。< / p>
我能想到的最后一个选项是#[cfg(unix)]
离开大多数示例的源代码,将其转换为Windows上的存根,但我真的很喜欢这样做的一种更简洁的方法
是否有一些现有的方法可以在一些不受支持的目标上跳过适用于当前稳定的Rust / Cargo的示例?