rust use和extern的区别是什么?

2eafrhcq  于 2022-12-29  发布在  其他
关注(0)|答案(2)|浏览(358)

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

ovfsdjhp

ovfsdjhp1#

extern crate foo表示你想要链接一个外部库,并将顶层的crate名称带入作用域(等价于use foo)。截至Rust 2018,大多数情况下you won't need to use extern crate anymore,因为Cargo会通知编译器有哪些crate。(有一两个例外)
use bar是引用完全限定符号的简写。
从理论上讲,该语言不需要use-你可以完全限定名称,但是输入std::collections::HashMap.new(...)会变得非常乏味!相反,你可以只输入use std::collections::HashMap一次,然后HashMap会引用它。

3j86kqsm

3j86kqsm2#

在撰写本文时,已接受的答案是正确的,但现在已不再正确。自Rust 2018以来,几乎不再需要extern crate
现在只需要向Cargo.toml添加外部依赖项。
use的工作原理和以前一样。
official documentation中了解更多信息。
编辑:已接受的答案现已经过编辑,以正确反映《 rust 2018》中的变化。

相关问题