전체적인 평가는 저수준임에도 굉장히 현대적인 느낌. 변수 선언법이 JS, Kotlin과 비슷하다. 

- JS

var num1 = 1 -> Scope가 함수 단위인 변수

let num2 = 2 -> 가변변수

const num3 = 3 -> 불변변수

- Kotlin

var num1 : Int = 1 -> 가변변수

val num2 : Int = 1 -> 불변변수

- Rust

let num1 : u32 = 1 -> 불변변수

let mut num2 : u32 = 2 -> 가변변수

const num3 : u32 = 3 -> 불변변수

(타입 추론을 통해 u32를 생략해 줄 수 있다)


Rust의 또다른 특징은 변수 가리기(Shadowing)에 있다. 위의 Rust의 첫 번째 줄 let과 const는 둘 다 불변변수 선언 키워드이지만 차이가 있다. const는 여느 언어가 그렇듯 값이 바뀌면 안 되는 변수를 선언할 때 사용하는 키워드이고, let 키워드는 좀 특별하다. 아래의 C코드와 비교해 보면,

- C

int num = 5;

int num += 5;

printf("%d", num);

=> 불가능. 이미 선언된 num을 다시 선언할 수 없음

- Rust

let num = 5;

let num += 5;

println!("{}", num);

=> 가능. 변수 가리기(Shadowing)을 이용해 기존에 선언된 num의 값을 숨기고 새로운 값을 num에 저장

같은 변수의 이름을 여러 번 사용할 수 있다. 변수 가리기는 변수의 자료형을 변환할 때 유용하다.  num_string, num_length처럼 자료형별로 일일이 변수를 선언해줄 필요 없이 num 하나만 사용하는 것이 가능하다.