繁体   English   中英

use 和 extern 有什么区别?

[英]What's the difference between use and extern?

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

extern crate foo表示您要链接外部库并将顶级 crate 名称带入范围(相当于use foo )。 从 Rust 2018 开始,在大多数情况下, 您将不再需要使用extern crate因为 Cargo 会通知编译器存在哪些 crate。 (有一两个例外

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

理论上,该语言不需要use ——您总是可以完全限定名称,但是键入std::collections::HashMap.new(...)会变得非常乏味! 相反,您只需键入use std::collections::HashMap一次,然后HashMap将引用它。

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

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

use和以前一样。

官方文档中阅读更多内容

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM