我有一个木箱 foo_sys
。在 Rust 2015 版本中,为了方便起见,我使用 extern crate foo_sys as foo
,但是在 Rust 2018 版本中,不再需要使用 extern crate
,而且我不想仅仅为了别名而使用它。当去掉 extern crate
后,我会得到以下错误:
错误[E0463]:找不到
foo
的木箱
我有一个木箱 foo_sys
。在 Rust 2015 版本中,为了方便起见,我使用 extern crate foo_sys as foo
,但是在 Rust 2018 版本中,不再需要使用 extern crate
,而且我不想仅仅为了别名而使用它。当去掉 extern crate
后,我会得到以下错误:
错误[E0463]:找不到
foo
的木箱
重命名依赖项 功能允许您以不同于源名称的名称导入依赖项。这在以下几种情况下很有用:
- 从不同的注册表中依赖相同名称的包。
- 依赖多个版本的包。
- 避免需要在 Rust 源代码中使用
extern crate foo as bar
。
与其编写:
[dependencies]
foo_sys = "0.2"
可以在Cargo.toml
的依赖项中添加package
键:
[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;