문자열과 &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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.