我是Rust的新手.我认为这use
用于将标识符导入当前范围,extern
并用于声明外部模块.但这种理解(也许是错误的)对我没有任何意义.有人可以解释为什么Rust有这两个概念以及使用它们的合适案例是什么?
She*_*ter 31
extern crate foo
表示您要链接外部库并将顶级包名称带入scope(use foo
).从Rust 2018开始,在大多数情况下,您将不再需要使用extern crate
,因为Cargo会告知编译器存在哪些板条箱.(有一两个例外)
use bar
是引用完全限定符号的简写.
从理论上讲,语言并不需要 use
- 你可以随时完全限定名称,但打字std::collections::HashMap.new(...)
会变得非常繁琐!相反,您只需键入use std::collections::HashMap
一次然后HashMap
将引用它.(extern crate foo
声明use foo
是前奏的一部分,所以你通常不会看到)
dro*_*ear 14
在撰写本文时,已接受的答案是正确的。但是,它不再正确。
extern crate
自Rust 2018以来几乎不需要。
现在,您只需要向Cargo.toml添加外部依赖项。
use
与以前一样。
编辑:现在已经编辑了可接受的答案以正确反映Rust 2018中的更改。