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 

녹가 동등한 능력을 가지고 있는가 다음과 같이

는 GCC와 함께이 수행 할 수 있습니다?


참고로 조용한 경고 방법에 대해 질문합니다. 예를 들어 사용하지 않은 var 경고를 해결할 수있는 방법이 있음을 알고 있습니다.

+1

모듈의 모든 종류의 경고를 무시한다는 뜻입니까? 질문은 약간 불분명하다. – ljedrz

+0

@LukasKalbertodt는 복제본이 아니므로 _ 경고를 음소거하는 것에 대해 묻습니다. – ideasman42

+0

rustc를 실행하면 여러 경고가 표시 될 수 있으며 하나의 인스턴트가 그 중 하나가됩니다. 업데이트 된 질문이 더 명확하게 표시되어 GCC를 통해 이미 수행 할 수있는 방법을 보여줍니다. – 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 : Lukas가 말했듯이 예를 들어 다음과 같이 쓸 수도 있습니다. 문 또는 표현식에 #[allow(dead_code)]이 있지만 현재는 experimental입니다.