상세 컨텐츠

본문 제목

41. 이동(Move) 현상 이해하기

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

by 러스트코리아 2026. 9. 8. 16:42

본문

반응형

 

안녕하세요! 러스트(Rust)라는 멋진 언어의 세계에 오신 것을 환영합니다. 지금까지 잘 따라오고 계시네요!

오늘은 러스트에서 가장 독특하면서도 중요한 개념인 **'이동(Move)'**에 대해 함께 알아볼 거예요.

 

처음에는 조금 낯설 수 있지만, 저와 함께 비유를 통해 천천히 살펴보면 금방 이해하실 수 있을 거예요. 자, 시작해 볼까요?

---

### 1. '복사'가 아니라 '선물'이에요!

 

보통 다른 프로그래밍 언어에서는 데이터를 다른 변수에 넣으면 똑같은 것이 하나 더 생기는 '복사'가 일어나곤 해요. 하지만 러스트는 조금 달라요.

 

**비유를 들어볼게요:**

 

여러분이 아주 귀하고 세상에 단 하나뿐인 **'마법의 책'**을 가지고 있다고 상상해 보세요.

 

* **복사(Copy):** 친구가 그 책이 탐나서 똑같은 책을 한 권 더 인쇄해서 가져가는 거예요. 이제 책은 두 권이 되죠.

 

* **이동(Move):** 여러분이 가진 **그 책 자체를 친구에게 건네주는 거예요.

 

** 이제 친구는 책을 가졌지만, **여러분은 더 이상 책을 가지고 있지 않게 되죠.**

 

러스트에서 데이터가 움직이는 방식은 바로 이 **'이동(Move)'** 방식이랍니다!

 

---

### 2. 왜 이동(Move)을 하나요?

 

왜 번거롭게 복사를 안 하고 주인을 바꿀까요? 그 이유는 바로 **안전(Safety)** 때문이에요.

 

컴퓨터에는 데이터를 저장하는 **메모리(Memory, 정보를 기억하는 공간)**라는 곳이 있어요. 만약 주인(변수)이 여러 명이면, 서로 데이터를 마음대로 바꾸려다가 사고가 날 수 있거든요. 러스트는 **"데이터의 주인(소유권, Ownership)은 언제나 딱 한 명이어야 해!"**라는 규칙을 세워서 사고를 미리 방지한답니다.

 

---

### 3. 코드로 직접 살펴봐요!

 

아주 간단한 코드로 이 '이동' 현상을 확인해 볼게요.

 

fn main() {
    // 1. 's1'이라는 이름의 바구니에 "안녕"이라는 글자를 담았어요.
    let s1 = String::from("안녕"); 

    // 2. s1이 가진 글자의 주인 권리(소유권)를 's2'에게 넘겨줬어요. (이동 발생!)
    let s2 = s1; 

    // 3. 이제 s2는 글자를 잘 출력할 수 있어요.
    println!("s2가 가진 값: {}", s2); // s2는 이제 당당한 주인이에요!

    // 4. 하지만 아래 줄의 주석을 풀면 에러가 나요!
    // println!("{}", s1); // 에러! s1은 이미 s2에게 권리를 넘겨줘서 빈털터리가 됐거든요.
}

 

**설명:**

- `let s2 = s1;`이 실행되는 순간, `s1`은 더 이상 데이터를 관리할 권리가 없어져요.

- 이것을 전문 용어로 **소유권 이전(Ownership Transfer)** 또는 **이동(Move)**이라고 불러요.

---

### 4. 당황하지 마세요! 여러분을 돕는 에러 메시지

 

만약 여러분이 실수로 권리를 넘겨준 `s1`을 다시 사용하려고 하면, 러스트는 친절하게 알려줄 거예요. > "미안하지만 `s1`은 이미 `s2`로 **이동(move)**했어! 그래서 여기서는 쓸 수 없어."

 

러스트는 프로그램이 실행되기 전에 이런 실수를 미리 잡아주기 때문에, 나중에 큰 버그가 생기는 것을 막아준답니다. 정말 든든한 조력자죠?

---

### 오늘의 핵심 요약!

1. **이동(Move)**이란 데이터의 **주인(소유권)**이 바뀌는 현상이에요.

2. 주인이 바뀌면, 예전 주인은 더 이상 그 데이터를 사용할 수 없어요.

 

3. 이 규칙 덕분에 러스트는 메모리를 아주 **안전하게** 관리할 수 있답니다.

 

처음에는 "내 마음대로 안 되네?"라고 느낄 수 있지만, 이 규칙에 익숙해지면 세상에서 가장 튼튼하고 안전한 프로그램을 만드실 수 있을 거예요. 여러분은 지금 아주 중요한 고개를 잘 넘으셨어요!

반응형

관련글 더보기