Como entender melhor o Crate in Rust?

Aug 21 2020

Neste livro- Rust By Example , Capítulo 11:

Uma caixa é uma unidade de compilação em Rust. Sempre que some_file.rs é chamado, some_file.rs é tratado como o arquivo crate .

De acordo com este livro, e quanto ao arquivo de origem?

A referência de ferrugem | Caixas e arquivos de origem

O modelo de compilação centra-se em artefatos chamados caixas. Cada compilação processa uma única caixa na forma de origem e, se for bem-sucedida, produz uma única caixa na forma binária: um executável ou algum tipo de biblioteca.

O compilador Rust é sempre invocado com um único arquivo de origem como entrada e sempre produz uma única caixa de saída. O processamento desse arquivo de origem pode resultar no carregamento de outros arquivos de origem como módulos. Os arquivos de origem têm a extensão .rs.

De acordo com esta declaração, eu penso:

Arquivo de origem (arquivo .rs) --> caixa correspondente

Assim como: .java --> .class

Agora não consigo entender esse problema; Eu estou no mar.

Respostas

6 KevinReid Aug 21 2020 at 11:16

Esta é a parte fundamental do material que você citou:

O processamento desse arquivo de origem pode resultar no carregamento de outros arquivos de origem como módulos.

Se você examinar uma biblioteca típica, encontrará um arquivo chamado src/lib.rsque contém várias linhas como mod foo;. Cada um deles identifica outro arquivo src/foo.rsque o compilador interpretará como outro módulo que faz parte do engradado (ou pode conter o módulo diretamente, no mesmo arquivo).

Não é que um arquivo de origem compõe uma caixa: é que, a partir desse arquivo de origem, você pode encontrar todos os arquivos que compõem a caixa, ao contrário de outros modelos de compilação em que o compilador pode receber muitos nomes de arquivo para começar .