2017-02-23 2 views
1

일부 최적화/알고리즘은 코드를 상당히 쉽게 읽을 수 없으므로 파일/모듈 내에서 복잡한 기능을 사용하지 않도록 설정하는 것이 유용하므로이 코드를 수정할 때 발생하는 모든 오류를 간단한 코드와 비교하여 신속하게 테스트 할 수 있습니다. USE_SOME_FEATURE는 예를 들어파일 또는 모듈 수준 '기능'을 사용할 수 있습니까?

C.에 ifdef처럼 사용되기 때문에

현재 사용 const USE_SOME_FEATURE: bool = true;

이 합리적인 방법을 보이지만 코드가 이상하게 조금 읽을 수, 클리 피는 당신이 작성하고자 :

if foo { 
    { ..other code.. } 
} else { 
    // final case 
    if USE_SOME_FEATURE { 
     { ..fancy_code.. } 
    } else { 
     { ..simple_code.. } 
    } 
} 

으로 :

이럴 가독성을 상처 무시할 수 있습니다
if foo { 
    { ..other code.. } 
} else if USE_SOME_FEATURE { 
    // final case 
    { ..fancy_code.. } 
} else { 
    // final case 
    { ..simple_code.. } 
} 

-하지만 부울를 사용하여 발생 여기서 feature이 더 적합 할 수 있습니다.

크레이트에 파일을 표시하지 않고 파일 내에 기능을 표시하는 방법이 있습니까?
(이는 내부 디버깅 및 코드 변경 테스트 용이기 때문에).

+0

가치가있는 부분에 대해서는 clippy가이 점에 대해 불평하는 것이 잘못이라고 생각합니다. 때로는 중첩 된 if는 'else if' 체인보다 읽기 쉽습니다. 클리프 (clippy)에서 건강에 관한 일차적 인 관심이 있다면,이 보푸라기를 끌 수있는 방법을 찾아 볼 것입니다. – trentcl

+0

나는 바깥 쪽의'else'에 주석이있을 때이 린트를 비활성화하기 위해 [issue] (https://github.com/Manishearth/rust-clippy/issues/798)를 보았습니다. – trentcl

답변

3

빌드 스크립트를 사용하여 새 cfg 조건을 만들 수 있습니다. 빌드 스크립트에서 println!("cargo:rustc-cfg=whatever")을 사용하면 함수 및 명령문에서 #[cfg(whatever)]을 사용할 수 있습니다.

관련 문제