⭐ Rust의 변수 특징
Rust의 변수는 기본적으로 불변이다.
즉, 불변성 변수에 값을 재할당하려고 하면 컴파일 에러가 발생한다.
이 덕분에 Rust는 코드의 안전성과 동시성에서 강점을 발휘한다.
🏃♂️ 실습 해보자!
불변성 확인해보기
먼저, variables
라는 새 프로젝트를 생성한다.
본인은 VS Code에서 진행하므로, VS Code도 실행해 주었다.
cargo new variables --bin
cd variables
code .
main.rs
파일에 다음 코드를 작성해서 실행해보자.
fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
다음처럼 컴파일 에러가 발생한 것을 볼 수 있다.
에러는 불변성 변수인 x
에 재할당이 불가하다는 것을 알려주고 있다.
가변성 변수로 만들어보자
그렇다면 이제 다음과 같이 코드를 수정해보자.
fn main() {
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
가변성 변수를 생성하려면 let mut
로 변수를 선언하면 된다.
이렇게 성공적으로 변수에 재할당이 된 것을 확인할 수 있다.
Shadowing
Rust는 이전에 선언한 변수와 같은 이름의 새 변수를 선언할 수 있다.
이 때, 새 변수는 이전 변수를 shadow하게 된다.
Shadowing을 사용하면 변수의 유형을 변경할 수 있고, 이전 변수와 같은 이름을 계속 사용할 수 있다.
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
}
이렇게 let x =
구문으로 x
를 새로 선언해 새로운 값으로 shadow 할 수 있다.
위 코드를 실행하면 최종적으로 12
라는 결과값을 얻을 수 있다.
그렇다면 가변성 변수와 shadowing의 차이는 무엇일까?
일단 mut
로 선언하는 것과 가장 큰 차이는 가변성/불변성이다.
즉, let
키워드를 사용하지 않고 새로운 값을 할당하려 하면 컴파일 에러가 발생한다는 이야기이다.
또 다른 차이점은 변수 유형을 변경할 수 있느냐, 없느냐 이다.
mut
로 변수를 생성하게 되면, 해당 변수에 저장될 수 있는 변수의 유형이 고정된다.
예를 들어, 다음과 같은 코드를 작성해보았다.
fn main() {
let mut x = 5;
x = x + 1;
println!("The value of x is: {}", x);
}
실행해보면 다음처럼 에러가 발생한다.
이는 x
의 유형이 int인데, str을 넣으려고 했기 때문에 mismatched types
에러가 발생한 것이다.
이번엔 shadowing을 통해 변수를 재선언 해보자.
fn main() {
let x = "abc";
let x = x.len();
println!("The value of x is: {}", x);
}
위는 먼저 문자열을 할당한 다음, 정수인 문자열의 길이를 할당하는 코드이다.
이렇게 변수의 유형이 바뀌어도 에러가 발생하지 않고 잘 실행이 되는 것을 확인할 수 있다.
참고 자료
https://rinthel.github.io/rust-lang-book-ko/ch03-01-variables-and-mutability.html
'Programming Language > RUST' 카테고리의 다른 글
[Rustling] exercises/01_variables/variables1.rs 풀기 (1) | 2024.10.11 |
---|---|
Rustling 시작하기 (3) | 2024.10.11 |
RUST의 데이터 타입 (0) | 2024.10.10 |
Rust로 만드는 숫자 추리 게임 (8) | 2024.10.08 |
Hello, Cargo! (with VS Code) (0) | 2024.10.07 |