Avatar ·

Was sind Crate-Attribute in Rust und wo müssen sie im Code hinzugefügt werden?

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und versuche, Crate-Attribute zu verstehen. In der offiziellen Dokumentation steht, dass es Attribute gibt, die auf das gesamte Crate angewendet werden, aber ich verstehe nicht, was das bedeutet und wo ich sie hinsetzen soll. Ich habe ein einfaches Projekt, das ich mit `cargo new my_project` erstellt habe. Darin gibt es eine Datei `main.rs` mit einer `main`-Funktion. Ich habe gelesen, dass man das Attribut `#![allow(unused_variables)]` verwenden kann, damit der Compiler sich nicht über ungenutzte Variablen beschwert. Aber als ich schrieb: ```rust #![allow(unused_variables)] fn main() { let x = 5; let y = 10; println!("Hello!"); } ``` Hat der Compiler eine Warnung ausgegeben, dass das Attribut nicht auf einen Ausdruck angewendet wird. Ich habe versucht, `#[allow(unused_variables)]` (mit einem Ausrufezeichen) zu setzen, und dann verschwand die Warnung nur für einen Ausdruck, nicht für die gesamte Datei. Was ist der Unterschied zwischen `#![...]` und `#[...]`? Warum hat mein Attribut nicht als Crate-Attribut funktioniert? Und wo genau muss ich es hinzufügen?