불변 변수와 상수의 차이점

백엔드&인프라 추종자·2025년 6월 14일

rust 공부

목록 보기
1/14

좋은 질문입니다. Rust에서 불변 변수(immutable variable)상수(constant)는 비슷해 보이지만, 용도와 동작 방식이 분명히 다릅니다.


✅ 요약 표: 불변 vs 상수

항목불변 변수 (let)상수 (const)
선언 키워드letconst
변경 가능 여부기본은 불변 (단, mut로 가변 가능)절대 변경 불가
초기화 시점런타임에 평가 가능반드시 컴파일 타임에 평가되어야 함
타입 명시선택사항반드시 타입 명시 필요
사용 가능 위치함수 내부, 외부 모두 가능전역 또는 함수 내부 모두 가능
할당 값런타임 계산 가능오직 상수 표현식만 가능
메모리 위치스택에 할당되거나 최적화됨고정된 주소, 이식 가능한 바이너리 일부

🔍 예제 코드 비교

1. 불변 변수 (let)

fn main() {
    let x = 5;       // 불변 변수
    // x = 6;        // ❌ 에러: 변수는 변경할 수 없음

    let mut y = 10;  // 가변 변수
    y = 20;          // ✅ 가능
}

2. 상수 (const)

const MAX_USERS: u32 = 1000;

fn main() {
    println!("최대 사용자 수: {}", MAX_USERS);
}
  • const는 반드시 타입을 명시해야 합니다: u32, &'static str, 등
  • const는 항상 컴파일 타임에 결정되는 정적인 값만 가능

예: const PI: f64 = std::f64::consts::PI;
그러나 const NOW: u64 = get_current_time(); ❌ (함수 호출은 안 됨)


🧠 실전에서의 차이점 요약

상황추천 방식
런타임에 값 계산이 필요한 경우let 사용
컴파일 타임에 고정된 값, 전역 설정 등const 사용
값이 절대 바뀌지 않고 프로그램 전체에서 공유됨const 사용
함수 내부에서만 쓰이고 값이 변하지 않음let 사용

🔚 결론

  • let 불변 변수: 런타임에 초기화 가능, 함수 지역에서도 유용
  • const 상수: 컴파일 타임에 반드시 결정되어야 하며, 항상 불변

이 둘은 용도와 시점이 다르므로, 상황에 맞게 구분해서 사용하는 것이 중요합니다.

원하시면 static 변수와 const의 차이도 추가로 설명드릴 수 있습니다.

profile
AI 답변 글을 주로 올립니다.

0개의 댓글