2016-09-01 15 views
5
, unused_variables gibi tek bir uyarı olduğunu varsayalım. Bunları tek bir anda görmezden gelmek, onları bir kod bloğu ya da fonksiyonuna ayırmak için bir yol var mı?

Kodda tek bir uyarı olduğunda, açık olması. Bu uyarıya hitap eden özel değişiklikler yapmak zorunda kalmadan sadece uyarıyı susturabilme kabiliyetini istiyorum. Ve bu sessiz uyarıları başka hiçbir yerde, hatta daha sonra aynı işlevde.Rust'taki tek bir bildirim için uyarı nasıl kapatılır?

#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 

Pas eşdeğer yeteneği var mı şu şekildedir:

GCC ile bu yapılabilir?


Not, sessiz uyarıların nasıl olacağı hakkında genel durumu soruyorum. Kullanılmayan var uyarısını çözmenin yolları vardır, örneğin.

+1

Bir modüldeki tüm uyarıları dikkate almamak mı istiyorsunuz? Soru biraz belirsiz. – ljedrz

+0

@LukasKalbertodt, bir kopya değil, _any_ uyarılarını susturmayı soruyorum. – ideasman42

+0

Pask'ı çalıştırdığınızda, birçok uyarı verebilir, tek bir an bunlardan biri olabilir. Daha net olmak için güncellenmiş soru, bunun GCC ile nasıl yapıldığını gösteren bir örnek. – ideasman42

cevap

10

Uyarıları susturmak için etkilenen ifadeye veya ebeveynlerinden herhangi birine allow(warning_type) özniteliğini eklemeniz gerekir. Yalnızca belirli bir ifadeye uyarıyı susturmak istiyorlar varsa, teoride bu ifade/açıklamaya özelliğini ekleyebilirsiniz:

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

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

    println!("hi!"); 
} 

Ancak bu özellik deneysel ve gece üzerinde kullanılabilir ! Bu özellik hakkında devam eden tartışmayı here'dan okuyabilirsiniz.

  • ebeveyn kapsamına niteliği (örneğin fonksiyonu) ekleyin: Bu arada

    birkaç farklı seçenek vardır. Bu da, diğer uyarıları da susturur. Ayrıca, tüm kapsam kapsamına uygulanan iç öznitelikler (#![allow(unused_variables)] gibi) kullanabilirsiniz. Modül dosyanızın üst kısmında bir iç özellik kullanırsanız, tüm dosyaya uygulanır.
  • unused_variables durumunda, uyarıyı susturmak için değişken adını alt çizgi ile başlatabilirsiniz. Yani let _not_used = 27; bir uyarı tetiklemez.
  • Bazı durumlarda (en az) path_statements bazı durumlarda, uyarıyı susturmak için yol bildiriminin sağ tarafına bir let _ = ekleyebilirsiniz.
1

Bunun peşinde olduğunuzdan emin değilim, ancak bir modüldeki tüm uyarıları susturmak isterseniz, ör. #![allow(dead_code)] (ünlem işareti) modülün üstünde. Bu, tüm modülde bu tür tüm uyarıları devre dışı bırakır. Ayrıca rustc numaralı telefonu arayarak, ör. -A dead_code.

Düzenle: Tüm uyarıları, modülün üst kısmındaki #![allow(warnings)] yazarak devre dışı bırakabilirsiniz.

Edit2: Belirli uyarılar göz ardı edilir bir mod Ule (gibi Rust book açıklanmaktadır) ekleyebilirsiniz.

Edit3: Lukas'in dediği gibi, ayrıca yazabilirsiniz. Bir ifade veya ifade üzerinde #[allow(dead_code)], ancak şu anda experimental.

İlgili konular