3.3 constants

Rust는 두 다른 타입의 상수를 가졌는데 선언 시 글로벌을 포함해 모든 범위로 선언 가능하다. 양 쪽 다 명시적인 타입 주해가 필요하다.

  • const: 변경 불가능한 값 (일반적으로).
  • static: 'static의 생명주기에 따라 가변적 변수.

하나 특별한 경우는 "string" 리터럴이다. 직접적인 할당이 static 변수에 수정 없이 이뤄질 수 있는 이유는 그 타입 선언 때문이다:&'static str이 요구하는 생명주기는 'static이다. 다른 모든 참조 타입은 반드시 분명히 주해를 달아야 이들이 'static의 생명주기를 수행한다. 이 사항이 사소해 보이는 이유는 명시적 주해의 요구가 구분을 은닉하기 때문이다.

// 글로벌은 모든 다른 범위 외부에서 선언된다. 
static LANGUAGE: &'static str = "Rust";
const  THRESHOLD: i32 = 10;

fn is_big(n: i32) -> bool {
    // 상수에 접근하는 몇 함수. 
    n > THRESHOLD
}

fn main() {
    let n = 16;

    // 메인 쓰레드에서 상수에 접근
    println!("This is {}", LANGUAGE);
    println!("The threshold is {}", THRESHOLD);
    println!("{} is {}", n, if is_big(n) { "big" } else { "small" });

    // 에러! `const`는 수정될 수 없음.
    THRESHOLD = 5;
    // FIXME ^ 이 줄을 주석처리 하세요.
}

See also:

The const/static RFC, 'static lifetime

results matching ""

    No results matching ""