我有一个板条箱foo_sys
。在 Rust 2015 中,我使用它extern crate foo_sys as foo
是为了方便,但在 Rust 2018extern crate
中不再需要,我不想仅将它用于别名。下降时extern crate
,我得到
错误[E0463] : 找不到板条箱
foo
我有一个板条箱foo_sys
。在 Rust 2015 中,我使用它extern crate foo_sys as foo
是为了方便,但在 Rust 2018extern crate
中不再需要,我不想仅将它用于别名。下降时extern crate
,我得到
错误[E0463] : 找不到板条箱
foo
这可以通过Rust 1.31 中提供的rename-dependency Cargo 功能来实现。使用此功能,可以为依赖项提供包属性:
rename-dependency 功能允许您从源导入具有不同名称的依赖项。这在以下几种情况下很有用:
- 取决于来自不同注册表的具有相同名称的 crate。
- 取决于一个 crate 的多个版本。
- 避免
extern crate foo as bar
在 Rust 源代码中需要。
而不是写
[dependencies]
foo_sys = "0.2"
可以将package
密钥添加到依赖项中Cargo.toml
:
[dependencies]
foo = { package = "foo_sys", version = "0.2" }
警告:使用此功能时,Rust 1.26.0 之前的 Cargo 可能会下载错误的依赖项!
惯用的解决方案是在Cargo.toml
. 有关更多信息,请参阅Tim Diekmann 的答案。
但是如果您出于某种原因不想使用Cargo.toml
重命名,您仍然可以使用旧语法。它已被软弃用,但未删除。所以这仍然有效:
extern crate foo_sys as foo;
(游乐场示例)