Introduction
Dans ce laboratoire, il est expliqué que les attributs crate_type et crate_name en Rust n'ont aucun effet lorsqu'on utilise Cargo, le gestionnaire de packages Rust largement utilisé pour les projets Rust.
Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser
main.rs, le compiler et l'exécuter avecrustc main.rs &&./main.
Crates
L'attribut crate_type peut être utilisé pour indiquer au compilateur si un crate est un binaire ou une bibliothèque (et même quel type de bibliothèque), et l'attribut crate_name peut être utilisé pour définir le nom du crate.
Cependant, il est important de noter que les attributs crate_type et crate_name n'ont aucun effet lorsqu'on utilise Cargo, le gestionnaire de packages Rust. Étant donné que Cargo est utilisé pour la majorité des projets Rust, cela signifie que les utilisations réelles de crate_type et crate_name sont relativement limitées.
// Ce crate est une bibliothèque
#![crate_type = "lib"]
// La bibliothèque s'appelle "rary"
#![crate_name = "rary"]
pub fn public_function() {
println!("appelé `public_function()` de rary");
}
fn private_function() {
println!("appelé `private_function()` de rary");
}
pub fn indirect_access() {
print!("appelé `indirect_access()` de rary, qui\n> ");
private_function();
}
Lorsque l'attribut crate_type est utilisé, on n'a plus besoin de passer le drapeau --crate-type à rustc.
$ rustc lib.rs
$ ls lib*
library.rlib
Résumé
Félicitations ! Vous avez terminé le laboratoire Crates. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.