[TIL] Rust 1

  • 변수는 기본적으로 immutable이다.
  • mutable하게 하고싶다면 mut를 추가해야 한다.
  • 이런 Rust의 특징은 변수에 할당된 값이 의도치 않게 변경되어 생기는 버그를 방지해 준다.
fn main() {
    let default_val = 5; // immutable
    let mut mutable_val = 5; // mutable
}
  • 상수는 기본적으로 immutable이고 항상 immutable이다.
const CONSTANT_VAL: u32 = 123;
  • 상수를 선언할 때는 mut를 함께 사용할 수 없다.

  • 할당할 값의 타입이 반드시 지정되어야 한다 (type of the value must be annotated)

  • 상수는 글로벌 스코프를 포함한 모든 스코프에서 선언할 수 있다.

  • 변수는 immutable이지만 shadowing을 통해서 값을 바꿀 수도 있다.

fn main() {
    let x = 5;
    let x = x + 1; // 6
    {
        let x = x * 2; // 12
    }
    // x is 6 again

    let x = "a string"; // ok
    
    let mut y = 6;
    y = "another string" // compile ERROR
}
  • shadowing은 mut와는 다른데, shadowing을 해서 변수에 할당된 값을 바꿀 수 있지만, 바뀐 값은 immutable하다. mut로 선언된 변수는 항상 mutable하다.
  • shadowing을 통해서 기존 변수에 다른 타입의 값을 할당할 수 있다.
  • mut를 사용할 때 기존 변수에 다른 타입의 값을 할당하면 컴파일 에러가 발생한다. mut는 변수의 타입을 변경하진 못한다.