如何只为给定的平台使用一个箱子?

How to use a crate only for a given platform?

我想在项目中使用 nix crate。

但是,这个项目也有一个可接受的替代实现 OSX 和 Windows,我想在其中使用不同的板条箱。

目前我只想要 nix 在 Linux 平台上的表达方式是什么?

要使依赖项完全特定于目标,您需要执行两个步骤。

首先,您需要在 Cargo.toml 中指定此项,如下所示:

[target.'cfg(target_os = "linux")'.dependencies]
nix = "0.5"

这将使 Cargo 仅在该配置处于活动状态时包含依赖项。但是,这意味着当您尝试在其他平台上构建时,您的 extern crate 会出现编译错误!要解决此问题,请使用 cfg 属性对其进行注释,如下所示:

#[cfg(target_os = "linux")]
extern crate nix;

当然,您必须确保只在 注释有相同 cfg 属性的代码中使用 nix crate。