동작하는 코드
아래 코드를 Rust Playground에서 실행해보세요!
fn main() {
let name = "DaleSchool";
let year = 2026;
println!("사이트 이름: {name}");
println!("올해는 {year}년이에요");
}
let으로 변수를 만들고, println! 안에서 {변수명} 형태로 값을 출력할 수 있어요.
이번에는 값을 바꾸는 코드를 볼게요.
fn main() {
let mut score = 0;
println!("처음 점수: {score}");
score = 10;
println!("변경 후 점수: {score}");
}
변수 앞에 mut을 붙이면 값을 나중에 바꿀 수 있어요.
직접 수정하기
아래 코드를 실행해보세요. 에러가 나요!
fn main() {
let x = 5;
println!("x = {x}");
x = 6; // 여기서 에러!
println!("x = {x}");
}
에러가 나는 이유를 짐작해보세요. 그다음, let 옆에 mut을 붙여서 에러를 해결해보세요.
"왜?" — 왜 값을 못 바꾸게 할까요?
Rust에서 변수는 기본적으로 불변(immutable) 이에요. 한 번 값을 넣으면 바꿀 수 없어요.
"그게 왜 좋은 건가요?"라고 생각할 수 있어요. 코드가 길어지면 어디서 값이 바뀌었는지 추적하기 어려워져요. Rust는 안전을 위해 기본적으로 값을 바꿀 수 없게 해요. 바꾸고 싶으면 mut을 붙이면 돼요.
println!에서 변수를 출력하는 방법은 두 가지예요.
fn main() {
let age = 20;
// 방법 1: 중괄호 안에 변수명 직접 쓰기
println!("나이: {age}살");
// 방법 2: 중괄호 비워두고 뒤에 변수 전달하기
println!("나이: {}살", age);
}
둘 다 같은 결과예요. 편한 방식을 사용하세요!
심화 학습
섀도잉 — 같은 이름으로 새 변수 만들기
Rust에서는 같은 이름의 변수를 let으로 다시 선언할 수 있어요. 이걸 섀도잉(shadowing) 이라고 해요.
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("x = {x}"); // 12
}
mut과 다른 점은 매번 새로운 변수를 만드는 거예요. mut 없이도 값을 "바꾸는 것처럼" 보이게 할 수 있어요. 자세한 차이는 나중에 배울 거예요.
아래 코드를 실행하면 컴파일러가 에러를 알려줘요.
fn main() {
let x = 5;
x = 6;
}
에러 메시지:
error[E0384]: cannot assign twice to immutable variable `x`
--> src/main.rs:3:5
|
2 | let x = 5;
| - first assignment to `x`
3 | x = 6;
| ^^^^^ cannot assign twice to immutable variable
해석: "불변 변수 x에 두 번 값을 넣을 수 없어요"라는 뜻이에요. let mut x = 5;로 바꾸면 해결돼요.
컴파일러가 실수를 미리 알려준 거예요! 에러 메시지를 잘 읽으면 해결 방법이 보여요.
- 변수
temperature를mut으로 선언하고, 처음에는20을 넣은 뒤25로 바꿔서 두 값을 모두 출력해보세요. - 좋아하는 음식 이름을 변수에 저장하고,
println!으로 "제가 좋아하는 음식은 {변수명}이에요!"를 출력해보세요.
Q1. 아래 코드의 실행 결과는 무엇일까요?
fn main() {
let mut count = 3;
count = 7;
println!("{count}");
}
- A) 3
- B) 7
- C) 컴파일 에러
- D) 37
Q2. 변수를 선언할 때 값을 나중에 바꾸고 싶으면 어떤 키워드를 써야 할까요?
- A)
var - B)
let - C)
mut - D)
change
Q3. 아래 코드는 정상적으로 실행될까요?
fn main() {
let city = "서울";
let city = "부산";
println!("{city}");
}
- A) 에러가 난다
- B) "서울"이 출력된다
- C) "부산"이 출력된다
- D) 둘 다 출력된다