[rust] use와 extern의 차이점은 무엇입니까?

저는 Rust를 처음 사용합니다. 나는 그 생각 use현재 범위에 수입 식별자로 사용되며 extern외부 모듈을 선언하는 데 사용됩니다. 그러나이 이해 (아마도 틀렸을 수도 있음)는 나에게 의미가 없습니다. 누군가 Rust에이 두 가지 개념이있는 이유와이를 사용하기에 적합한 경우가 무엇인지 설명 할 수 있습니까?



답변

extern crate foo외부 라이브러리에 링크하려고 함을 나타내며 최상위 수준 상자 이름을 범위로 가져옵니다 (와 동일 use foo). Rust 2018 부터는extern crate Cargo가 컴파일러에게 어떤 상자가 있는지 알려주기 때문에 대부분의 경우 더 이상 사용할 필요가 없습니다 . ( 한두 가지 예외가 있습니다. )

use bar 정규화 된 기호를 참조하는 약어입니다.

이론적으로는 언어가 필요 하지 않습니다. use항상 이름을 완전히 정규화 할 수 있지만 타이핑 std::collections::HashMap.new(...)은 매우 지루할 것입니다! 대신 use std::collections::HashMap한 번만 입력 하면 HashMap해당 내용을 참조 할 수 있습니다.


답변

수락 된 답변은 작성 당시에 정확했습니다. 그러나 더 이상 정확하지 않습니다.
extern crateRust 2018 이후로 거의 필요하지 않습니다.

이제 Cargo.toml에 외부 종속성을 추가하기 만하면됩니다.

use 이전과 동일하게 작동합니다.

공식 문서 에서 자세한 내용을 읽어보십시오 .

편집 : 이제 수락 된 답변이 Rust 2018의 변경 사항을 올바르게 반영하도록 편집되었습니다.


답변