使用和外部的区别是什么?

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

36409 次浏览

extern crate foo表示您希望链接到一个外部库,并将顶级的板条箱名称放入作用域(相当于 use foo)。在 Rust 2018中,大多数情况下是 你不再需要使用 extern crate,因为 Cargo 通知编译器存在哪些板条箱。(有 一两个例外)

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

从理论上讲,这种语言并不使用 需要 useーー你总是可以对名称进行完全限定,但是输入 std::collections::HashMap.new(...)会变得非常单调乏味!相反,您只需键入 use std::collections::HashMap一次,然后 HashMap就会引用它。

在写这篇文章的时候,被接受的答案是正确的,但是现在已经不正确了。 自从2018年生锈以来,几乎不再需要 extern crate

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

use的工作原理和以前一样。

阅读更多 正式文件

编辑: 已接受的答案现在已经被编辑,以正确反映 Rust 2018的变化。