상세 컨텐츠

본문 제목

55. 메서드 정의하기: impl 블록

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

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

본문

반응형

 

오늘은 우리가 만든 데이터에 '생명력'을 불어넣어 줄 아주 멋진 도구인 **'impl(임플) 블록'**에 대해 알아볼게요.

 

---

 

### 1. 비유로 이해하기: "붕어빵 틀과 붕어빵의 개인기"

 

지난 시간에 배운 **구조체(데이터를 담는 주머니)**가 '붕어빵의 재료(팥, 밀가루)'를 정하는 것이라면, 오늘 배울 **메서드(데이터가 할 수 있는 동작)**는 그 붕어빵이 하는 '개인기'라고 생각하면 쉬워요.

 

* **구조체(Struct):** 붕어빵의 설계도 (이름, 속재료 등)

* **impl 블록:** 붕어빵에게 기술을 가르치는 '훈련소'

* **메서드(Method):** 붕어빵이 훈련소에서 배운 '노래하기', '춤추기' 같은 기술

 

즉, **impl**은 "이 데이터는 이런 기능을 할 수 있어!"라고 정의해 주는 상자랍니다.

 

---

 

### 2. impl 블록과 메서드 정의하기

 

컴퓨터에게 "이 구조체는 이런 동작을 할 수 있어"라고 알려줄 때는 `impl`(implementation, 구현 - 기능을 실제로 만드는 것)이라는 글자를 사용합니다.

struct Dog { // '강아지'라는 이름의 데이터 주머니를 만들어요.
    name: String, // 강아지는 '이름'이라는 정보를 가집니다.
}

impl Dog { // 지금부터 '강아지'가 할 수 있는 동작(기능)을 적어볼게요.
    fn bark(&self) { // '짖기'라는 메서드(동작)를 만듭니다.
        println!("멍멍! 나는 {}야!", self.name); // 자기 자신의 이름을 말하며 짖어요.
    }
}

#### 여기서 잠깐! `&self`가 뭐예요?

 

메서드 괄호 안에 있는 `&self`(셀프 - 자기 자신)는 아주 중요해요! 이건 **"이 동작을 하는 바로 그 강아지 자신"**을 가리키는 말이에요. 내 이름을 말하려면 내가 누구인지 알아야 하니까요!

---

### 3. 실제로 사용해보기

 

이제 우리가 만든 '기술'을 어떻게 사용하는지 볼까요? 마침표(`.`) 하나면 충분합니다!

 

fn main() {
    let my_dog = Dog { name: String::from("초코") }; // '초코'라는 이름을 가진 강아지를 만들어요.
    
    my_dog.bark(); // 마침표(.)를 찍어서 '짖기' 기능을 실행해요!
}

 

---

 

### 4. 핵심 정리

 

1. **impl (구현):** 특정 구조체를 위한 함수들을 모아놓는 공간이에요.

2. **메서드 (Method):** 구조체에 종속되어 특정 데이터가 수행하는 동작이에요.

3. **self (자기 자신):** 메서드를 호출한 그 데이터 객체 자신을 의미해요.

4. **호출:** `변수명.메서드이름()` 형태로 사용해요.

 

---

 

**응원의 한 마디!** 처음에는 `impl`이나 `self`라는 단어가 낯설게 느껴질 수 있어요. 하지만 "데이터에게 기술을 가르친다!"라는 개념만 기억하시면 충분합니다.

반응형

관련글 더보기