¿Cómo entender mejor Crate en Rust?

Aug 21 2020

En este libro , Rust By Example , Capítulo 11:

Una caja es una unidad de compilación en Rust. Cada vez que se llama a rustc some_file.rs, some_file.rs se trata como el archivo de caja .

De acuerdo con este libro, ¿qué pasa con el archivo fuente?

La referencia de óxido | Cajas y archivos fuente

El modelo de compilación se centra en artefactos llamados cajas. Cada compilación procesa una sola caja en forma de fuente y, si tiene éxito, produce una sola caja en forma binaria: ya sea un ejecutable o algún tipo de biblioteca.

El compilador de Rust siempre se invoca con un solo archivo fuente como entrada y siempre produce una sola caja de salida. El procesamiento de ese archivo fuente puede resultar en que otros archivos fuente se carguen como módulos. Los archivos de origen tienen la extensión .rs.

De acuerdo con esta declaración, pienso:

Archivo de origen (archivo .rs) --> caja correspondiente

Al igual que: .java --> .class

Ahora no puedo entender este problema; Estoy todo en el mar.

Respuestas

6 KevinReid Aug 21 2020 at 11:16

Esta es la parte clave del material que has citado:

El procesamiento de ese archivo fuente puede resultar en que otros archivos fuente se carguen como módulos.

Si examina una biblioteca típica, encontrará un archivo llamado src/lib.rsque contiene varias líneas como mod foo;. Cada uno de ellos identifica otro archivo src/foo.rsque el compilador interpretará como otro módulo que forma parte de la caja (o puede contener el módulo directamente, en el mismo archivo).

No es que un archivo fuente constituya una caja: es que, a partir de ese archivo fuente, puede encontrar todos los archivos que componen la caja, a diferencia de otros modelos de compilación en los que el compilador puede recibir muchos nombres de archivo para comenzar. .