Menu
Coddy logo textTech

String vs. &str

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 54번째.

Rust에는 서로 다른 목적을 가진 두 가지 주요 문자열 타입인 String&str이 있습니다. 이들 사이의 차이점을 이해하는 것은 Rust에서 텍스트를 효과적으로 다루는 데 매우 중요합니다.

String은 수정 가능한 소유권을 가진 힙 할당 문자열입니다. String을 생성하면 프로그램이 해당 데이터를 소유하며 메모리 관리를 책임집니다. mut로 선언하면 가변적이기 때문에 크기를 늘리거나 줄일 수 있고 내용을 변경할 수 있습니다.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // String은 소유권을 가지며 수정 가능하므로 이 코드는 정상적으로 작동합니다

반면, &str("스트링 슬라이스"라고 읽음)은 문자열 데이터에 대한 빌려온(borrowed), 불변의(immutable) 뷰입니다. 이것은 가리키는 데이터를 소유하지 않으며, 단지 다른 곳에 존재하는 문자열 내용에 대한 참조일 뿐입니다. "Hello"와 같은 문자열 리터럴은 실제로는 &str 타입입니다.

let my_slice: &str = "Hello World"; // 이것은 문자열 슬라이스입니다

String을 직접 쓰고 수정할 수 있는 책을 소유하는 것으로 생각하세요. 반면 &str은 다른 사람의 책을 빌리는 것과 같습니다. 읽을 수는 있지만 내용을 변경할 수는 없습니다. 이러한 구분은 Rust의 소유권 시스템의 기초이며 메모리 안전성을 보장하는 데 도움이 됩니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

치트 시트

Rust에는 두 가지 주요 문자열 타입이 있습니다:

  • String - 소유권을 가지며, 힙에 할당되고, 수정 가능한 문자열
  • &str - 빌려온(borrowed), 불변인 문자열 슬라이스 (문자열 데이터에 대한 참조)

String 생성하기:

let mut my_string = String::from("Hello");
my_string.push_str(" World");

문자열 리터럴은 &str 타입입니다:

let my_slice: &str = "Hello World";

String은 데이터를 소유하며 수정할 수 있는 반면, &str은 변경할 수 없는 참조입니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨