오늘은 코드를 훨씬 더 깔끔하고 보기 좋게 만들어주는 **'필드 초기화 축약법'**에 대해 알아볼 거예요. 어렵지 않으니 저와 함께 차근차근 살펴봐요!
---
여러분이 도시락 가게 사장님이라고 상상해 보세요. 손님이 주문한 음식을 도시락 통(구조체: 데이터를 담는 가방)에 담아야 합니다.
도시락 통에는 **'김밥'** 칸과 **'불고기'** 칸(필드: 가방 안의 작은 구역)이 있어요. 마침 요리사님이 **'김밥'**과 **'불고기'**를 만들어 주셨네요.
원래는 이렇게 말해야 해요.
> "도시락의 **김밥** 칸에는 요리사님이 주신 **김밥**을 넣고, **불고기** 칸에는 **불고기**를 넣어주세요!"
하지만 너무 길죠? 어차피 칸 이름과 음식 이름이 똑같으니까, 센스 있는 사장님은 이렇게 말합니다.
> "**김밥**이랑 **불고기** 넣어서 도시락 완성해 주세요!"
이것이 바로 Rust의 **필드 초기화 축약법**입니다!
---
시작하기 전에, 오늘 나올 어려운 단어들을 쉬운 말로 풀어서 알려드릴게요.
* **구조체(Struct):** 여러 가지 정보를 하나로 묶어주는 '데이터 가방'이에요.
* **필드(Field):** 가방 안에 들어가는 '각각의 항목(이름, 나이 등)'을 말해요.
* **초기화(Initialization):** 가방을 처음 만들 때 안에 '실제 값'을 넣어주는 과정이에요.
---
자, 이제 코드를 살펴볼까요? 얼마나 간단해지는지 비교해 보세요.
변수 이름과 가방 칸 이름이 같아도 다 써줘야 했어요.
struct User {
name: String, // '이름'이라는 칸
age: u32, // '나이'라는 칸
}
fn main() {
let name = String::from("철수"); // 'name'이라는 변수에 "철수" 저장
let age = 20; // 'age'라는 변수에 20 저장
let user = User {
name: name, // 'name' 칸에 변수 'name'을 넣어요 (반복!)
age: age, // 'age' 칸에 변수 'age'를 넣어요 (반복!)
};
}
변수 이름과 필드 이름이 같으면 한 번만 써도 Rust가 똑똑하게 알아들어요.
fn main() {
let name = String::from("철수"); // 변수 이름이 'name'
let age = 20; // 변수 이름이 'age'
// 필드 초기화 축약법 사용!
let user = User {
name, // 'name: name'을 줄여서 'name'만 써도 돼요!
age, // 'age: age'를 줄여서 'age'만 써도 돼요!
};
// 코드가 훨씬 깔끔해졌죠?
}
---
**"가방 칸 이름(필드 이름)과 내가 넣으려는 변수 이름이 토씨 하나 안 틀리고 똑같아야 한다!"**는 점이에요.
- **이름이 같으면?** `name` (축약 가능!)
- **이름이 다르면?** `name: user_name` (축약 불가능, 원래대로 써야 해요.)
---
여러분은 방금 Rust의 코드를 더 간결하게 만드는 유용한 기술 하나를 마스터하셨어요! 이렇게 작은 것부터 하나씩 익히다 보면, 어느새 멋진 프로그램을 만들고 있는 자신을 발견하게 될 거예요.
| 55. 메서드 정의하기: impl 블록 (0) | 2026.10.06 |
|---|---|
| 54. 튜플 구조체 활용하기 (0) | 2026.10.06 |
| 52. 구조체 정의와 인스턴스 생성 (0) | 2026.10.01 |
| 51. 구조체란 무엇인가? (0) | 2026.10.01 |
| 50. 따라하며 배우기: 단어 개수 세기 (0) | 2026.09.28 |