const 키워드로 상수를 쓸 수 있고, let으로 변수를 바인딩할 때 mut 키워드를 붙이지 않으면 기본적으로 Immutable 변수가 됩니다.
기본적으로 const 키워드의 값은 constant expression으로 컴파일타임에 결정되어야 합니다. immutable 변수는 런타임에 결정되는 값도 사용할 수 있습니다.
아래는 const 상수와 immutable 변수의 차이점입니다. (참고 링크)
let a = 1;
let a = a*a; // OK
const b: u32 = 3;
const b: u32 = b*b; // error[E0428]
- 상수는 variable shadowing이 불가능함
let version = "0.1.1"; // error
const VERSION: &'static str = "0.1.1"; // OK
fn main() {
...
}
- 상수는 global scope에도 사용할 수 있음
let inch = 2.54; // OK (inch: f64)
// const PI = 3.14; // error
const PI: f64 = 3.14; // OK
- 상수는 타입을 명시해줘야함
fn plus_one(x: i32) -> i32 {
x+1
}
const fn plus_one_const(x: i32) -> i32 {
x+1
}
fn main() {
const N1: i32 = plus_one(3); // error[E0015]
const N2: i32 = plus_one_const(3); // OK
}
- 상수는 constant expression으로만 초기화시킬 수 있음 (함수 반환값 or 런타임에 결정되는 값 사용불가)
Rust의 const는 여러모로 C++의 constexpr과 비슷한 듯 합니다.
반응형
'프로그래밍 > Rust' 카테고리의 다른 글
[Rust] rustup, cargo shell completion 추가하기 (0) | 2024.04.06 |
---|---|
[Rust] 물음표(?) 연산자와 unwrap (0) | 2024.03.03 |
Rust 예제: Guessing Game (0) | 2020.06.30 |