Rust의 기본 변수는 C#과는 달리 불변성입니다. Rust는 컴파일러가 불변 변수 값에 대한 보증을 해주는데, 이는 안전성과 동시성이라는 장점을 취하기 위해 강제하는 요소입니다.
let x = 5;
println!("x : {}", x);
x = 6;
println!("x : {}", x);
다음과 같이 코드를 작성한 후 실행을 하면 에러가 출력됩니다. 이는 불변 변수에 두번째 값을 할당하려 했기 때문입니다.
가변 변수로 만들어주기 위해서는 mut를 입력해주어야 합니다.
let mut x = 5;
데이터 구조체의 규모가 작을수록 새 인스턴스를 생성해 할당하고, 클수록 가변한 인스턴스를 사용하는 것이 더 합리적일 수 있습니다.
[변수와 상수의 차이점]
상수로 불변성 변수와 마찬가지로 값의 변경이 허용되지 않지만 이 둘은 다음과 같은 차이점을 가지고 있습니다.
1) 상수는 불변성 그 자체이므로 상수에는 mut을 사용할 수 없습니다.
2) 상수에는 const 키워드를 사용해야 하고, 반드시 값의 유형을 선언해야 합니다.
3) 상수는 전체 영역에서 선언될 수 있어 여러군데에 사용될 때 유용합니다.
4) 상수는 오직 아래와 같은 상수 표현식에서만 설정되고, 함수 호출의 결과값이나 런타임에 결정되는 값이 설정될 수 없습니다.
const number: u32 = 100;
[Shadowing]
: 새로 선언한 변수를 선언할 때 이전 변수와 같은 이름으로 선언하는 것입니다.
let x = 5;
let x = x + 1;
이렇게 섀도잉하는 것은 mut 변수와는 달리, let 키워드를 사용하지 않고 값을 대입하려 하면 컴파일 에러가 뜨게 됩니다.
섀도잉할 때 다음과 같이 값의 타입도 바꿀 수 있습니다.
let spaces = " ";
let spaces = spaces.len();
참조 : https://rinthel.github.io/rust-lang-book-ko/ch03-01-variables-and-mutability.html
'[Rust]' 카테고리의 다른 글
[Rust] 소유권 (0) | 2023.07.25 |
---|---|
[Rust] 제어문 (0) | 2023.07.20 |
[Rust] 함수 동작 원리 (0) | 2023.07.19 |
[Rust] 데이터 타입 (0) | 2023.07.18 |
[Rust] cargo (0) | 2023.07.16 |