如何在Rust 2018中惯用别名包装箱?

Tim*_*ann 10 rust rust-cargo rust-2018

我有一个箱子foo_sys.在Rust 2015中我使用的extern crate foo_sys as foo是方便,但在Rust 2018 extern crate中不再需要了,我不想仅将其用于别名.下降时extern crate,我明白了

错误[E0463]:无法找到包装箱foo

Tim*_*ann 16

这可以通过Rust 1.31中提供的重命名依赖 Cargo功能来实现.使用此功能,可以为依赖项提供package属性:

重命名依赖项功能允许您从源中导入具有不同名称的依赖项.这在以下几种情况下非常有用:

  • 取决于来自不同注册表的具有相同名称的包装箱.
  • 取决于箱子的多个版本.
  • 避免需要extern crate foo as barRust源码.

而不是写作

[dependencies]
foo_sys = "0.2"
Run Code Online (Sandbox Code Playgroud)

package密钥可以被添加到依赖Cargo.toml:

[dependencies]
foo = { package = "foo_sys", version = "0.2" }
Run Code Online (Sandbox Code Playgroud)


Luk*_*odt 7

惯用的解决方案是重命名箱子Cargo.toml.有关详细信息,请参阅Tim Diekmann的答案.

但是如果您Cargo.toml由于某种原因不想使用重命名,您仍然可以使用旧语法.它被软弃用,但未被删除.所以这仍然有效:

extern crate foo_sys as foo;
Run Code Online (Sandbox Code Playgroud)

(游乐场示例)