[Rust 공식문서 한국어 정리] 122. Rust &str 타입 가이드
[Rust 공식문서 한국어 정리] 122. Rust &str 타입 가이드
원문 제목: Primitive Type str
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rust의 str 타입이 제공하는 UTF-8 문자열 슬라이스를 상세히 다룹니다.
&str과 String의 차이, 소유권 없는 문자열 참조의 특징을 학습합니다.
str의 다양한 메서드와 문자열 조작 패턴을 정리합니다.
문자열 리터럴이 &'static str인 이유와 이를 활용하는 방법을 설명합니다.
str을 함수 인자로 사용하는 것이 API 설계에서 왜 선호되는지 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① str — UTF-8 문자열의 슬라이스(DST)
② &str — 불변 문자열 참조(가장 많이 사용)
③ &'static str — 프로그램 종료까지 유효한 문자열 리터럴
④ 문자열 리터럴 — 바이너리에 내장된 상수 문자열
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
str은 UTF-8로 인코딩된 문자열 데이터의 슬라이스입니다.
str은 DST이므로 직접 변수로 사용할 수 없고 항상 참조 뒤에 있어야 합니다.
가장 일반적인 형태는 &str입니다.
문자열 리터럴 "hello"는 &'static str 타입으로 바이너리에 내장됩니다.
&str은 소유권이 없으므로 복제 비용이 거의 없습니다.
String은 Deref을 구현하므로 &string은 &str로 자동 변환됩니다.
따라서 String을 받는 함수 대신 &str을 인자로 받으면 String과 &str 모두 전달 가능합니다.
str의 len()은 UTF-8 바이트 수를 반환합니다.
chars()는 유니코드 스칼라 값 반복자를 생성합니다.
char_indices()는 바이트 인덱스와 문자 쌍을 반환합니다.
is_empty(), starts_with(), ends_with(), contains(), find(), rfind() 등 검색 메서드를 제공합니다.
split(), rsplite(), splitn() 등 분할 메서드도 제공합니다.
trim(), trim_start(), trim_end()로 공백을 제거합니다.
to_lowercase(), to_uppercase()는 새 String을 반환합니다.
parse()는 &str을 다른 타입으로 파싱합니다.
예를 들어 "42".parse::()는 Result를 반환합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
함수 인자를 &str로 받아 String과 문자열 리터럴 모두 수용합니다.
문자열 리터럴을 설정값이나 에러 메시지로 사용하여 'static 참조를 활용합니다.
find와 split으로 문자열을 파싱하고 분석합니다.
trim과 starts_with으로 입력값을 정제하고 검증합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
&str은 소유권 없는 UTF-8 문자열 참조로 효율적입니다.
String과의 자동 변환 덕분에 API 설계에서 &str을 선호합니다.
문자열 리터럴은 &'static str로 프로그램 전체 기간 유효합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/primitive.str.html
String: https://doc.rust-lang.org/std/string/struct.String.html
#Rust #str #문자열슬라이스 #UTF8 #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30