我是Rust新手。我認爲use
用於將標識符導入當前範圍,extern
用於聲明外部模塊。但這種理解(也許是錯誤的)對我來說沒有任何意義。有人能解釋爲什麼Rust有這兩個概念,有什麼合適的案例可以使用它們?使用和extern有什麼區別?
6
A
回答
6
extern crate foo
表示您要鏈接到外部庫並將頂級箱子名稱帶入作用域(use foo
)。 use bar
本質上是引用完全限定符號的簡寫。
從理論上講,語言不需要需要use
- 您始終可以完全限定名稱。但打字std::str::String.new(...)
會變得非常乏味!相反,您只需輸入use std::str::String
一次,然後String
即可參考。 (該use
語句String
是前奏的一部分,所以你通常不會看到)
語言確實需要extern
- 這就是你如何通知你要針對ISN一箱鏈接編譯器你自己的。
+1
如果沒有'use',我們甚至不能將'std'作爲它的外觀。要麼我們會有一個單一的標準庫文件夾,要麼每個人都會處理'String'實際上是'collections :: string :: String'的事實。 – delnan 2015-04-02 11:11:49
相關問題
- 1. Rust中的extern fn和extern「C」fn有什麼區別?
- 2. C中`extern int(x)[]`和`extern int x []`有什麼區別?
- 3. 使用extern和使用getter的區別?
- 4. 使用AWSDynamoDBObjectMapper和AWSDynamoDB有什麼區別?
- 5. 使用int [] []和int [,]有什麼區別?
- 6. 使用「com.facebook.android.LoginButton」和「com.facebook.widget.LoginButton」有什麼區別?
- 7. 使用javac和javax.tools.JavaCompiler有什麼區別?
- 8. layout_weight和使用dp有什麼區別?
- 9. 使用WorkflowInvoker和WorkflowApplication有什麼區別?
- 10. 使用include和required()有什麼區別?
- 11. 有什麼區別使用=和:在javascript
- 12. 有什麼區別`和$(Bash中有什麼區別?
- 13. 有什麼區別? :和||
- 14. &&和||有什麼區別?
- 15. 「/」和「/ *」有什麼區別?
- 16. 有什麼區別:。!和:r!?
- 17. ==和===有什麼區別?
- 18. Appender和〜有什麼區別?
- 19. $ @和$ *有什麼區別?
- 20. is和=有什麼區別?
- 21. #.00和#。##有什麼區別?
- 22. `==`和`is`有什麼區別?
- 23. '=='和'==='有什麼區別?
- 24. /和/#/有什麼區別?
- 25. | 0和~~有什麼區別?
- 26. `&`和`ref`有什麼區別?
- 27. ==和===有什麼區別?
- 28. ==和===有什麼區別?
- 29. `{}`和`[]`有什麼區別?
- 30. JavaScript和=== ===有什麼區別?
你指的是'extern crate foo'這個語句嗎?箱子和模塊在Rust中是不同的概念,你可能想看看[「基本術語:箱子和模塊」](http://doc.rust-lang.org/1.0.0-alpha.2/book/ crates-and-modules.html),它解釋了兩者之間的區別(我個人發現下面的例子過於詳細)。 – 2015-04-02 02:34:02