Sono nuovo di Rust. Penso che use
venga utilizzato per importare identificatori nell'attuale ambito e extern
viene utilizzato per dichiarare un modulo esterno. Ma questa comprensione (forse sbagliata) non ha alcun senso per me. Qualcuno può spiegare perché Rust ha questi due concetti e quali sono i casi adatti per usarli?Qual è la differenza tra l'uso e l'extern?
risposta
extern crate foo
indica che si desidera eseguire il collegamento a una libreria esterna e portare il nome della cassa di livello superiore in ambito (use foo
). use bar
è essenzialmente una scorciatoia per referenziare simboli pienamente qualificati.
In teoria, la lingua non è necessariouse
- è sempre possibile qualificare completamente i nomi. Ma digitare std::str::String.new(...)
diventerebbe molto noioso! Invece, è sufficiente digitare use std::str::String
una volta e quindi fare riferimento a String
. (La dichiarazione use
per String
fa parte del preludio, quindi di solito non vedi che)
La lingua fa necessità extern
- è così che si informa il compilatore che si sta per collegare contro una cassa che isn Sei il tuo.
Senza 'use', non potremmo nemmeno avere' std' come facciata. O avremmo un'unica cassa libreria monolitica standard, o tutti avrebbero a che fare con il fatto che 'String' è in realtà' collections :: string :: String'. – delnan
- 1. Qual è la differenza tra = e: =
- 2. Qual è la differenza tra Verilog! e ~?
- 3. Qual è la differenza tra? : e ||
- 4. qual è la differenza tra [[], []] e [[]] * 2
- 5. Qual è la differenza tra $ e $$?
- 6. Qual è la differenza tra ("") e (null)
- 7. Qual è la differenza tra dict() e {}?
- 8. Qual è la differenza tra " " e ""?
- 9. Qual è la differenza tra {0} e ""?
- 10. Qual è la differenza tra `##` e `hashCode`?
- 11. Qual è la differenza tra {0} e +?
- 12. Qual è la differenza tra .ToString() e + ""
- 13. qual è la differenza tra:.! e: r !?
- 14. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 15. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 16. Qual è la differenza tra il callback e la promessa
- 17. Qual è la differenza tra la sezione .got e .got.plt?
- 18. Qual è la differenza tra la lista() e []
- 19. Qual è la differenza tra GHC e la piattaforma Haskell?
- 20. Qual è la differenza tra sé e la finestra?
- 21. Qual è la differenza tra la cartella vim72 e vimfiles?
- 22. Qual è la differenza tra la serratura e RLock
- 23. Qual è la differenza tra la funzione() {}() e function() {}()
- 24. Qual è la differenza tra la crittografia SHA e AES?
- 25. Qual è la differenza tra la [OptionalField] e [NonSerialized]
- 26. Qual è la differenza tra Chisel e Lava e CLaSH?
- 27. Qual è la differenza tra queste funzioni
- 28. Qual è la differenza tra queste funzioni?
- 29. Qual è la differenza tra Response.Write() eResponse.Output.Write()?
- 30. Qual è la differenza tra applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
Ti riferisci alla frase 'extern crate foo;'? Casse e moduli sono concetti separati in Rust, potresti dare un'occhiata a ["Terminologia di base: casse e moduli"] (http://doc.rust-lang.org/1.0.0-alpha.2/book/ crates-and-modules.html) che spiega la differenza tra i due (personalmente trovo gli esempi in basso eccessivamente prolissi). –