ver una recuperar programa para metadatos imagenes imagen fotos archivo rust rust-cargo

rust - una - recuperar metadatos imagenes



¿Cómo puede un programa Rust acceder a los metadatos de su paquete Cargo? (2)

¿Cómo accede a los metadatos de un paquete Cargo (p. Ej., La versión) desde el código Rust del paquete? En mi caso, estoy creando una herramienta de línea de comando que me gustaría tener un indicador de versión estándar, y me gustaría que la implementación lea la versión del paquete de Cargo.toml para no tener que mantenlo en dos lugares. Me imagino que también hay otras razones por las que alguien podría querer acceder a los metadatos de Cargo desde el programa.


Cargo pasa algunos metadatos al compilador a través de variables de entorno, cuya lista se puede encontrar en las páginas de documentación de Cargo .

El entorno del compilador se llena por fill_env en el código de Cargo. Este código se ha vuelto más complejo desde versiones anteriores, y la lista completa de variables ya no es obvia porque puede ser dinámico. Sin embargo, al menos las siguientes variables se establecen allí (de la lista en los documentos):

CARGO_MANIFEST_DIR CARGO_PKG_AUTHORS CARGO_PKG_DESCRIPTION CARGO_PKG_HOMEPAGE CARGO_PKG_NAME CARGO_PKG_REPOSITORY CARGO_PKG_VERSION CARGO_PKG_VERSION_MAJOR CARGO_PKG_VERSION_MINOR CARGO_PKG_VERSION_PATCH CARGO_PKG_VERSION_PRE

Puede acceder a las variables de entorno utilizando la macro env!() . Para insertar el número de versión de su programa, puede hacer esto:

const VERSION: &''static str = env!("CARGO_PKG_VERSION"); // ... println!("MyProgram v{}", VERSION);

Si desea que su programa se compile incluso sin Cargo, puede usar option_env!() :

const VERSION: Option<&''static str> = option_env!("CARGO_PKG_VERSION"); // ... println!("MyProgram v{}", VERSION.unwrap_or("unknown"));


La caja built ayuda a serializar una gran parte del entorno de Cargo sin toda la caldera.