Come capire meglio Crate in Rust?
In questo libro- Ruggine con l'esempio , capitolo 11:
Una cassa è un'unità di compilazione in Rust. Ogni volta che viene chiamato rustc some_file.rs, some_file.rs viene trattato come il file crate .
Secondo questo libro, per quanto riguarda il file sorgente?
Il riferimento alla ruggine | Casse e file sorgente
Il modello di compilazione è incentrato su artefatti chiamati casse. Ogni compilazione elabora un singolo crate in formato sorgente e, in caso di successo, produce un singolo crate in formato binario: un eseguibile o una sorta di libreria.
Il compilatore Rust viene sempre invocato con un singolo file sorgente come input e produce sempre un singolo crate di output. L'elaborazione di tale file di origine può comportare il caricamento di altri file di origine come moduli. I file di origine hanno l'estensione .rs.
Secondo questa affermazione, penso:
File sorgente (file .rs) --> crate corrispondente
Proprio come: .java --> .class
Ora non riesco a capire questo problema; Sono tutto al mare.
Risposte
Questa è la parte fondamentale del materiale che hai citato:
L'elaborazione di tale file di origine può comportare il caricamento di altri file di origine come moduli.
Se esamini una libreria tipica, troverai un file chiamato src/lib.rs
che contiene diverse righe come mod foo;
. Ognuno di questi identifica un altro file src/foo.rs
che il compilatore interpreterà come un altro modulo facente parte del crate (oppure può contenere direttamente il modulo, nello stesso file).
Non è che un file sorgente costituisca una cassa: è che a partire da quel file sorgente, puoi trovare tutti i file che compongono la cassa, al contrario di altri modelli di compilazione in cui al compilatore potrebbero essere assegnati molti nomi di file da cui iniziare .