Cargo-Attribute im Rust-Entwicklungsprozess

RustRustBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.rs verwenden und es mit rustc main.rs &&./main kompilieren 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.