我认为use
关键字用于将标识符导入当前作用域,而extern crate
用于声明外部模块。但是这种理解(可能是错误的)对我来说没有意义。有人可以解释一下为什么Rust有这两个概念以及什么情况下适合使用它们吗?
我认为use
关键字用于将标识符导入当前作用域,而extern crate
用于声明外部模块。但是这种理解(可能是错误的)对我来说没有意义。有人可以解释一下为什么Rust有这两个概念以及什么情况下适合使用它们吗?
extern crate foo
表示你想链接到一个外部库,将顶层箱名引入作用域(相当于 use foo
)。截至 Rust 2018,在大多数情况下,你不再需要使用extern crate
了,因为 Cargo 会通知编译器哪些箱存在。(有一两个例外)
use bar
是一种简写方式,可以引用完全合格的符号。
理论上,语言不需要 use
—— 你总是可以完全限定名称,但输入 std::collections::HashMap.new(...)
将变得非常繁琐!相反,你只需键入 use std::collections::HashMap
一次,然后 HashMap
就会引用它。
use
,我们甚至不能像现在这样使用std
。要么我们只有一个庞大的标准库crate,要么每个人都会处理String
实际上是collections::string::String
这个事实。请注意不改变原文意思,尽量让翻译通俗易懂。 - user395760Cargo.toml
中,所以你不再需要使用 extern crate foo
了。 use
的用法与之前相同。在官方文档中了解更多信息。extern crate failure;
但是 use std::error::Error
。 - Paul Razvan Berguse
works the same as before”是什么意思,指的是以前哪个时候?你是指另一个答案中的“before”吗? - nbro
extern crate foo;
语句吗?在 Rust 中,Crate 和 Module 是不同的概念,你可能想看一下 "基本术语:Crates 和 Modules" 这篇文章,它解释了这两者之间的区别(尽管我个人认为下面的示例过于详细)。 - Qantas 94 Heavy