전체적인 평가는 저수준임에도 굉장히 현대적인 느낌. 변수 선언법이 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 하나만 사용하는 것이 가능하다.