2016-09-01 5 views
5

कहें कि path_statements, unused_variables जैसी एक चेतावनी है। क्या कोड कोड या फ़ंक्शन में उन्हें अलग किए बिना, इसके एक ही पल को अनदेखा करने का कोई तरीका है?जंग में एक कथन के लिए चेतावनी को शांत कैसे करें?

स्पष्ट होने के लिए, कोड में एक चेतावनी होने पर स्पष्ट होना चाहिए। मैं विशेष चेतावनी को संबोधित करने में विशेष परिवर्तन किए बिना, केवल उस चेतावनी को शांत करने की क्षमता चाहूंगा। और इस शांत चेतावनी के बिना कहीं और, एक ही समारोह में बाद में भी।

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wformat" 
    /* Isolated region which doesn't raise warnings! */ 
    this_would_raise_Wformat(args); 
#pragma GCC diagnostic pop 

जंग बराबर क्षमता है:

जीसीसी के साथ इस इस प्रकार किया जा सकता है?


नोट, चेतावनी को शांत करने के सामान्य मामले के बारे में पूछ रहा हूं। मुझे पता है कि उदाहरण के लिए अप्रयुक्त var चेतावनी को हल करने के तरीके हैं।

+1

क्या आप मॉड्यूल में किसी प्रकार की सभी चेतावनियों को अनदेखा करना चाहते हैं? सवाल थोड़ा अस्पष्ट है। – ljedrz

+0

@ लुकासकल्बर्टोड, डुप्लिकेट नहीं, मैं _any_ चेतावनियों को शांत करने के बारे में पूछ रहा हूं। – ideasman42

+0

जब आप rustc चलाते हैं, तो यह कई चेतावनियां दे सकता है, एक ही क्षण उनमें से एक होगा। अद्यतित प्रश्न अधिक स्पष्ट होने के लिए, उदाहरण दें कि यह जीसीसी के साथ पहले से ही कैसे किया जा सकता है। – ideasman42

उत्तर

10

चेतावनियों को चुप करने के लिए आपको प्रभावित अभिव्यक्ति या उसके किसी भी माता-पिता को allow(warning_type) विशेषता जोड़नी होगी। आप केवल एक विशिष्ट अभिव्यक्ति पर चेतावनी मौन करना चाहते हैं, तो आप सिद्धांत में है कि अभिव्यक्ति/बयान के विशेषता जोड़ सकते हैं:

fn main() { 
    #[allow(unused_variables)] 
    let not_used = 27; 

    #[allow(path_statements)] 
    std::io::stdin; 

    println!("hi!"); 
} 

हालांकि, यह सुविधा है प्रयोगात्मक और रात पर ही उपलब्ध ! आप इस सुविधा here के बारे में चल रही चर्चा पढ़ सकते हैं।

  • माता पिता गुंजाइश के लिए विशेषता (जैसे समारोह) जोड़ें:


    इस बीच आप कुछ अलग विकल्प हैं। हालांकि, यह अन्य चेतावनियों को भी शांत करता है। आप आंतरिक गुणों का उपयोग भी कर सकते हैं (जैसे #![allow(unused_variables)]) जो पूरे संलग्न क्षेत्र पर लागू होते हैं। यदि आप अपनी मॉड्यूल फ़ाइल के शीर्ष पर एक आंतरिक विशेषता का उपयोग करते हैं, तो यह पूरी फ़ाइल पर लागू होगा।

  • unused_variables के मामले में आप चेतावनी को चुप करने के लिए एक अंडरस्कोर के साथ परिवर्तनीय नाम प्रारंभ कर सकते हैं। तो let _not_used = 27; चेतावनी ट्रिगर नहीं करेगा।
  • path_statements के कुछ मामलों में (आप कम से कम let _ = को चेतावनी को चुप करने के लिए पथ विवरण के दाईं ओर जोड़ सकते हैं।
1

मुझे यकीन नहीं है कि यह आप के बाद क्या है, लेकिन यदि आप मॉड्यूल में किसी प्रकार की सभी चेतावनियों को चुप करना चाहते हैं, तो लिखें। मॉड्यूल के शीर्ष पर #![allow(dead_code)] (विस्मयादिबोधक चिह्न नोट करें)। यह पूरे मॉड्यूल में इस तरह की सभी चेतावनियों को अक्षम कर देगा। आप rustc को उदा। -A dead_code

संपादित करें: आप मॉड्यूल के शीर्ष पर #![allow(warnings)] लिखकर सभी चेतावनियों को अक्षम कर सकते हैं।

EDIT2: यदि आप एक mod ule (जैसे Rust book में वर्णित) जहां विशिष्ट चेतावनी को अनदेखा किया जाता सम्मिलित कर सकते हैं।

संपादित 3: चूंकि लुकास ने कहा, आप भी लिख सकते हैं उदा। #[allow(dead_code)] एक बयान या एक अभिव्यक्ति पर, लेकिन वर्तमान में यह experimental है।

संबंधित मुद्दे