use和extern有什么区别?

时间:2015-04-02 02:13:49

标签: rust

我是Rust的新手。我认为use用于将标识符导入当前范围,extern用于声明外部模块。但这种理解(也许是错误的)对我没有任何意义。有人可以解释为什么Rust有这两个概念以及使用它们的合适案例是什么?

2 个答案:

答案 0 :(得分:15)

extern crate foo表示您要链接外部库并将顶级包名称放入范围(use foo)。从Rust 2018开始,在大多数情况下you won't need to use extern crate anymore因为Cargo通知编译器存在什么条件箱。 (有one or two exceptions

use bar是引用完全限定符号的简写。

从理论上讲,语言并不需要 use - 您可以随时对名称进行全面限定,但输入std::str::String.new(...)会非常繁琐!相反,您只需输入use std::str::String一次,然后String即可参考。 (use String语句是前奏的一部分,因此您通常不会看到这一点。

答案 1 :(得分:4)

在撰写本文时,接受的答案是正确的。但是,它不再正确。 自Rust 2018以来几乎不需要extern crate

您现在只需要向Cargo.toml添加外部依赖项。

use的工作原理与以前相同。

official documentation中了解更多信息。