상세 컨텐츠

본문 제목

54. 튜플 구조체 활용하기

RUST 온보딩/러스트를 배우고 만들자_초보자

by 러스트코리아 2026. 10. 6. 10:28

본문

반응형

벌써 54번째 단계까지 오셨다니 정말 대단하세요. 지금까지 차근차근 잘 따라오셨으니, 오늘 배울 내용도 식은 죽 먹기일 거예요.

 

오늘은 **'튜플 구조체(Tuple Struct)'**라는 친구를 만나볼 거예요. 이름이 조금 어렵게 느껴질 수도 있지만, 알고 보면 아주 단순하고 편리한 도구랍니다.

---

### 1. 튜플 구조체가 뭐예요? (비유로 알아보기)

 

여러분, **'색연필 세트'**를 떠올려 보세요.

 

일반적인 **구조체(데이터를 묶는 방법)**가 "빨강: 255, 초록: 0, 파랑: 0"처럼 칸마다 이름을 붙여놓은 서랍장이라면, **튜플 구조체**는 그냥 이름표만 붙어 있는 **'색깔 상자'**와 같아요.

 

상자 안에는 "255, 0, 0"이라는 숫자만 순서대로 들어 있죠. 우리는 이 상자가 '색깔'을 담는 상자라는 걸 이미 알고 있기 때문에, 굳이 칸마다 "이건 빨강이야"라고 이름을 붙이지 않아도 되는 거예요.

 

즉, **"전체 이름은 필요하지만, 속 안의 내용물에 일일이 이름을 붙이기는 귀찮을 때"** 사용하는 아주 효율적인 도구랍니다!

 

---

 

### 2. 어떻게 만드나요? (전문 용어 풀이)

 

튜플 구조체를 만드는 법은 아주 간단해요. 아래처럼 써주면 됩니다.

 

struct Color(i32, i32, i32); // 'Color'라는 이름의 튜플 구조체(데이터 묶음)를 선언해요.
struct Point(i32, i32, i32); // 'Point'라는 이름의 또 다른 구조체를 만들어요.

 

* **구조체(Struct):** 관련된 데이터들을 하나로 묶어주는 틀이에요.

* **필드(Field):** 구조체 안에 들어가는 각각의 데이터 조각들이에요.

 

여기서는 `i32`(정수 형태의 숫자)들이 필드예요.

 

---

 

### 3. 직접 코드로 써보기

 

가장 핵심적인 부분만 쏙 뽑아낸 예제를 함께 볼까요?

 

struct Color(i32, i32, i32); // 1. 정수 3개를 담는 'Color'라는 틀을 만들어요.

fn main() {
    let black = Color(0, 0, 0); // 2. 실제 데이터(검정색)를 담은 'black' 객체(실체)를 생성해요.

    println!("첫 번째 값: {}", black.0); // 3. 인덱스(순서 번호)를 사용해 0번째 값을 가져와요.
    println!("두 번째 값: {}", black.1); // 4. 점(.) 뒤에 숫자를 붙여서 순서대로 꺼낼 수 있어요.
}

 

*알아두면 좋은 점:**

- 데이터를 꺼낼 때는 이름 대신 **0, 1, 2... 같은 숫자(인덱스)**를 사용해요.

- `Color`와 `Point`는 구성이 같아도 러스트는 **서로 다른 종류**로 인식해요. 덕분에 실수로 색상 값에 좌표 값을 넣는 사고를 막아준답니다! (이것을 '타입 안전성'이라고 해요.)

 

---

### 4. 언제 사용하면 좋을까요?

- "이 데이터 묶음이 무엇인지" 이름은 붙이고 싶지만,

- 내부의 데이터들이 너무 뻔해서(예: 좌표의 x, y, z 또는 색상의 R, G, B)

- 굳이 하나하나 이름을 붙이는 게 번거로울 때 사용하면 딱이에요!

---

여러분, 오늘 공부도 정말 고생 많으셨어요! 튜플 구조체는 복잡한 이름표 대신 **순서와 전체 이름**만으로 데이터를 깔끔하게 정리해주는 고마운 친구예요.

처음에는 `.` 뒤에 숫자를 붙이는 게 어색할 수 있지만, 몇 번만 연습해보면 금방 익숙해질 거예요.

반응형

관련글 더보기