जंग में अप्रयुक्त कोड चेतावनियों को कैसे निष्क्रिय करें?


228
struct SemanticDirection;

fn main() {}
warning: struct is never used: `SemanticDirection`
 --> src/main.rs:1:1
  |
1 | struct SemanticDirection;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(dead_code)] on by default

मैं किसी भी गंभीर चीज के लिए इन चेतावनियों को वापस कर दूंगा, लेकिन मैं सिर्फ भाषा के साथ छेड़छाड़ कर रहा हूं और यह मुझे चमगादड़ बना रहा है।

मैंने #[allow(dead_code)]अपने कोड में जोड़ने की कोशिश की , लेकिन वह काम नहीं किया।

जवाबों:


350

आप या तो यह कर सकते हैं:

  • allowएक संरचना, मॉड्यूल, फ़ंक्शन, आदि पर एक विशेषता जोड़ें ।:

    #[allow(dead_code)]
    struct SemanticDirection;
  • एक टोकरा-स्तरीय allowविशेषता जोड़ें ; ध्यान दें !:

    #![allow(dead_code)]
  • इसे पास करें rustc:

    rustc -A dead_code main.rs
  • पर्यावरण चर के cargoमाध्यम से इसका उपयोग करें RUSTFLAGS:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build

5
ध्यान दें कि पिछले एक सब कुछ के recompilation को गति देगा।
जोसेफ गार्विन

RUSTFLAGS वही है जिसकी मुझे जरूरत थी cargo test। धन्यवाद।
जैसे कि

60

इस चेतावनी को अक्षम करने का दूसरा तरीका पहचानकर्ता को उपसर्ग करना है _:

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

यह उपयोगी हो सकता है, उदाहरण के लिए, SDL विंडो के साथ:

let _window = video_subsystem.window("Rust SDL2 demo", 800, 600);

अंडरस्कोर के साथ प्रीफ़िक्सिंग नाम के रूप में एक एकल अंडरस्कोर का उपयोग करने से अलग है। निम्नलिखित करने से तुरंत खिड़की नष्ट हो जाएगी, जो कि इच्छित व्यवहार होने की संभावना नहीं है।

let _ = video_subsystem.window("Rust SDL2 demo", 800, 600);

यह "अंडरस्कोर को असाइन करना इसे नष्ट कर देगा" व्यवहार अजीब लगता है (हालांकि मुझे संदेह नहीं है कि आप सही हैं)। क्या आपके पास इसके लिए कोई संदर्भ है?
माइकल एंडरसन

4
@MichaelAnderson देखें "RAII। आप इसके विध्वंसक साइड इफेक्ट के लिए एक चर मौजूद होना चाह सकते हैं, लेकिन इसका अन्यथा उपयोग नहीं करते। इस उपयोग-मामले के लिए बस _ का उपयोग करना संभव नहीं है, क्योंकि _ एक चर बंधन और मूल्य नहीं है। बयान के अंत में गिरा दिया जाएगा। ” से stackoverflow.com/a/48361729/109618
डेविड जे।

9

कोड को सार्वजनिक करने से चेतावनी भी बंद हो जाती है; आपको संलग्नक को modभी सार्वजनिक करना होगा।

यह तब समझ में आता है जब आप एक पुस्तकालय लिख रहे हैं: आपका कोड आंतरिक रूप से "अप्रयुक्त" है क्योंकि इसका उपयोग क्लाइंट कोड द्वारा किया जाना है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.