如何在Rust 2018中习惯性地使用板条箱别名?

时间:2018-06-23 09:03:37

标签: rust rust-cargo rust-2018

我有一个板条箱setResult()。在Rust 2015中,为了方便起见,我使用了foo_sys,但是在Rust 2018中,extern crate foo_sys as foo不再需要了,我不想仅将其用于别名。放下extern crate时,我得到了

  

错误[E0463]:找不到extern crate的板条箱

2 个答案:

答案 0 :(得分:14)

这可以通过rename-dependency可用的in Rust 1.31货运功能来实现。使用此功能,可以为依赖项提供包属性:

  

重命名依赖性功能允许您导入名称与源名称不同的依赖性。在某些情况下这可能很有用:

     
      
  • 取决于来自不同注册表的同名箱子。
  •   
  • 取决于板条箱的多个版本。
  •   
  • 避免在Rust源中使用extern crate foo as bar
  •   

代替写作

[dependencies]
foo_sys = "0.2"

可以将package键添加到Cargo.toml中的依赖项中:

[dependencies]
foo = { package = "foo_sys", version = "0.2" }

答案 1 :(得分:7)

惯用的解决方案是重命名Cargo.toml中的箱子。有关更多信息,请参见the answer by Tim Diekmann

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

extern crate foo_sys as foo;

Playground example