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