0Pricing
Learn Rust Coding · 강의

문자열과 &str

소유한 텍스트와 빌린 텍스트

문자열과 &str은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

두 가지 문자열 타입

Rust에는 주요 텍스트 타입이 두 가지 있습니다.

  • String — 소유하며 크기를 늘릴 수 있는 문자열입니다.
  • &str — 빌린 문자열 슬라이스로, 텍스트를 바라보는 뷰입니다.
fn main() {
    let owned: String = String::from("hello");
    let borrowed: &str = "world";
    println!("{} {}", owned, borrowed);
}

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

큰따옴표로 텍스트를 작성하면 &str을 얻게 됩니다. 이는 고정되어 있으며 프로그램 바이너리에 저장됩니다.

fn main() {
    let greeting = "Hi there"; // type is &str
    println!("{}", greeting);
}

String 생성하기

String::from 또는 .to_string() 메서드로 소유하는 String을 만듭니다.

fn main() {
    let a = String::from("abc");
    let b = "xyz".to_string();
    println!("{} {}", a, b);
}

String 늘리기

String은 소유하며 크기를 늘릴 수 있으므로 push_str과 push로 내용을 추가할 수 있습니다.

fn main() {
    let mut s = String::from("Hello");
    s.push_str(", ");
    s.push_str("Rust");
    s.push('!');
    println!("{}", s);
}

문자열 연결

+ 연산자 또는 format! 매크로를 사용하여 문자열을 연결합니다. format!은 입력값을 소비하지 않습니다.

fn main() {
    let first = String::from("Hello");
    let second = String::from("World");
    let joined = format!("{} {}", first, second);
    println!("{}", joined);
}

String을 &str로 빌리기

String은 자동으로 &str로 빌릴 수 있습니다. 따라서 함수가 두 타입 중 어느 것이든 받을 수 있습니다.

fn print_text(text: &str) {
    println!("text: {}", text);
}

fn main() {
    let owned = String::from("owned");
    print_text(&owned);
    print_text("literal");
}

&str 매개변수를 선호하는 이유

함수는 일반적으로 String보다 &str을 받습니다. 이렇게 하면 호출자가 소유 문자열, 리터럴 또는 슬라이스를 전달할 수 있어 더 유연합니다.

fn shout(s: &str) -> String {
    s.to_uppercase()
}

fn main() {
    println!("{}", shout("quiet"));
}

바이트 단위 길이

len() 메서드는 문자가 아니라 바이트 단위의 길이를 반환합니다. ASCII 텍스트에서는 문자 하나가 1바이트입니다.

fn main() {
    let s = "hello";
    println!("{} bytes", s.len());
}

내용 확인하기

유용한 읽기 메서드로는 contains, starts_with, is_empty가 있습니다.

fn main() {
    let s = "hello world";
    println!("{}", s.contains("world"));
    println!("{}", s.starts_with("hello"));
}

소유권의 차이

String은 힙에 있는 데이터를 소유하고 해제할 책임이 있습니다. &str은 기존 데이터를 빌릴 뿐 아무것도 소유하지 않습니다.

fn main() {
    let owned = String::from("data");
    let view: &str = &owned[0..2];
    println!("owned {} view {}", owned, view);
}

두 타입 간 변환하기

두 타입은 서로 변환할 수 있습니다.

  • &str에서 String으로: .to_string() 또는 String::from.
  • String에서 &str으로: &s 또는 s.as_str().
fn main() {
    let s = String::from("convert");
    let slice: &str = s.as_str();
    let back: String = slice.to_string();
    println!("{} {}", slice, back);
}

빠른 확인

두 텍스트 타입의 차이를 떠올려 보세요.

정리

Rust의 문자열:

  • String — 소유하며 크기를 늘릴 수 있고 힙에 할당됩니다.
  • &str — 빌린 슬라이스 또는 뷰이며 리터럴이 사용하는 타입입니다.
  • String::from 또는 to_string()으로 만들고, push_str으로 늘립니다.
  • 함수 매개변수에는 &str을 우선 사용하세요.
fn main() {
    let mut msg = String::from("Rust");
    msg.push_str(" rocks");
    let view: &str = &msg;
    println!("{} ({} bytes)", view, view.len());
}

자주 묻는 질문

“문자열과 &str” 강의는 무료인가요?

네 — “문자열과 &str” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

“문자열과 &str”에서 뭘 배우나요?

소유한 텍스트와 빌린 텍스트 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“문자열과 &str” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 벡터
  2. 문자열과 &str
  3. HashMaps
  4. 컬렉션 순회하기
← Learn Rust Coding(으)로 돌아가기