Rust'da kullanılmayan kod uyarılarını nasıl devre dışı bırakabilirim?


231
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

Ciddi bir şey için bu uyarıları tekrar açacağım, ama sadece dille uğraşıyorum ve bu da yarasaları yönlendiriyor.

Koduma eklemeyi denedim #[allow(dead_code)], ama işe yaramadı.

Yanıtlar:


355

Şunlardan birini yapabilirsiniz:

  • allowBir yapıya, modüle, işleve vb. Bir özellik ekleyin :

    #[allow(dead_code)]
    struct SemanticDirection;
  • Bir sandık düzeyinde allowözellik ekleyin ; dikkat edin !:

    #![allow(dead_code)]
  • Şuraya ilet rustc:

    rustc -A dead_code main.rs
  • Kullanarak iletin cargoyoluyla RUSTFLAGSortam değişkeni:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build

5
Sonuncusunun her şeyin yeniden derlenmesini tetikleyeceğini unutmayın.
— Joseph Garvin

RUSTFLAGS ihtiyacım olan şey cargo test. Teşekkürler.
— likebike

61

Bu uyarıyı devre dışı bırakmanın başka bir yolu da tanımlayıcının önüne önek eklemektir _:

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

Bu, örneğin bir SDL penceresiyle faydalı olabilir:

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

Alt çizgi ile önek adı olarak yalnız bir alt çizgi kullanmaktan farklıdır. Aşağıdakileri yapmak, istenen davranış olması muhtemel olmayan pencereyi hemen yok edecektir.

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

"Alt çizgiye atamak onu yok edecektir" davranışı tuhaf görünüyor (doğru olduğundan şüphe etmiyorum). Bunun için bir referansınız var mı?
— Michael Anderson

4
@MichaelAnderson Bkz. "RAII. Yıkıcı yan etkisi için bir değişkenin var olmasını isteyebilirsiniz, ancak başka türlü kullanamazsınız. Bu değişken, _ için değişken bir bağlanma ve değer olmadığından, _ ifadenin sonunda bırakılacak. " dan stackoverflow.com/a/48361729/109618
— David J.

9

Kodu herkese açık hale getirmek de uyarıları durdurur; eki yapmanız gerekecekmod de herkese açık .

Bir kütüphane yazarken bu mantıklıdır: kodunuz dahili olarak "kullanılmaz", çünkü istemci kodu tarafından kullanılması amaçlanmıştır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.