我是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. 使用extern和使用getter的區別?
- 3. 使用int [] []和int [,]有什麼區別?
- 4. 使用WorkflowInvoker和WorkflowApplication有什麼區別?
- 5. 有什麼區別使用=和:在javascript
- 6. 有什麼區別`和$(Bash中有什麼區別?
- 7. ==和===有什麼區別?
- 8. ==和===有什麼區別?
- 9. 有什麼區別? :和||
- 10. ==和===有什麼區別?
- 11. '=='和'==='有什麼區別?
- 12. `&`和`ref`有什麼區別?
- 13. 有什麼區別:。!和:r!?
- 14. | 0和~~有什麼區別?
- 15. Appender和〜有什麼區別?
- 16. 爲什麼在%中使用合併和%有什麼區別?
- 17. xtype和別名有什麼區別?
- 18. 對象和引用有什麼區別?
- 19. 調用exampleFunction()和exampleFunction.call()有什麼區別?
- 20. 綁定和調用有什麼區別?
- 21. __weak和__block引用有什麼區別?
- 22. 有什麼區別
- 23. 有什麼區別
- 24. 有什麼區別?
- 25. 有什麼區別?
- 26. 有什麼區別?
- 27. 有什麼區別
- 28. 有什麼區別?
- 29. 有什麼區別?
- 30. 有什麼區別
你指的是'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