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 ^ 이 줄을 주석처리 하세요. }