Avatar ·

ما هي سمات الكريت في Rust وأين يجب إضافتها في الكود؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Rust وأحاول فهم سمات الكريت. في التوثيق الرسمي، مكتوب أن هناك بعض السمات التي تُطبق على الكريت بأكمله، لكنني لا أفهم ماذا يعني ذلك وأين يجب وضعها. لدي مشروع بسيط أنشأته عبر `cargo new my_project`. يوجد بداخله ملف `main.rs` مع دالة `main`. قرأت أنه يمكن استخدام السمة `#![allow(unused_variables)]` لمنع المترجم من التذمر بشأن المتغيرات غير المستخدمة. ولكن عندما كتبت: ```rust #![allow(unused_variables)] fn main() { let x = 5; let y = 10; println!("Hello!"); } ``` أصدر المترجم تحذيرًا بأن السمة لا تُطبق على تعبير. حاولت وضع `#[allow(unused_variables)]` (مع علامة تعجب واحدة)، وعندها اختفى التحذير لتعبير واحد فقط، وليس للملف بأكمله. ما الفرق بين `#![...]` و `#[...]`؟ لماذا لم تعمل سمة السمة كسمة كريت؟ وأين بالضبط يجب إضافتها؟