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