Einführung
In diesem Lab wird erklärt, dass die Attribute crate_type und crate_name in Rust keine Auswirkungen haben, wenn Cargo, der weit verbreitete Rust-Paketmanager für Rust-Projekte, verwendet wird.
Hinweis: Wenn das Lab keinen Dateinamen angibt, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie
main.rsverwenden und es mitrustc main.rs &&./mainkompilieren und ausführen.
Crates
Das Attribut crate_type kann verwendet werden, um dem Compiler mitzuteilen, ob ein Crate eine Binärdatei oder eine Bibliothek ist (und sogar welchen Typ von Bibliothek), und das Attribut crate_name kann verwendet werden, um den Namen des Crates festzulegen.
Es ist jedoch wichtig zu beachten, dass sowohl das Attribut crate_type als auch das Attribut crate_name keine Auswirkungen haben, wenn Cargo, der Rust-Paketmanager, verwendet wird. Da Cargo für die Mehrzahl der Rust-Projekte verwendet wird, bedeutet dies, dass die realen Anwendungen von crate_type und crate_name relativ begrenzt sind.
// Dieses Crate ist eine Bibliothek
#![crate_type = "lib"]
// Die Bibliothek heißt "rary"
#![crate_name = "rary"]
pub fn public_function() {
println!("aufgerufen rary's `public_function()`");
}
fn private_function() {
println!("aufgerufen rary's `private_function()`");
}
pub fn indirect_access() {
print!("aufgerufen rary's `indirect_access()`, das\n> ");
private_function();
}
Wenn das Attribut crate_type verwendet wird, müssen wir das Flag --crate-type nicht mehr an rustc übergeben.
$ rustc lib.rs
$ ls lib*
library.rlib
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Crates-Lab abgeschlossen. Sie können in LabEx weitere Labs ausprobieren, um Ihre Fähigkeiten zu verbessern.