Come capire meglio Crate in Rust?

Aug 21 2020

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

6 KevinReid Aug 21 2020 at 11:16

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.rsche contiene diverse righe come mod foo;. Ognuno di questi identifica un altro file src/foo.rsche 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 .