Rust 기본 : 슬라이스 (Slice)
슬라이스(Slice)는 컬렉션 내 연속적인 요소들을 참조(Borrow)합니다.
여기서 '연속적'이란 요소들이 서로 인접해 있다는 의미입니다.
일반적으로 컬렉션 전체가 아닌 일부분만을 참조하고 싶을 때 Slice를 사용합니다.
슬라이스는 컬렉션의 일부를 Borrow 한다.
- 불변 슬라이스(&[T]): 데이터의 일부에 대한 읽기 전용 접근을 허용합니다.
- 가변 슬라이스(&mut [T]): 데이터의 일부에 대한 읽기 및 쓰기 접근을 허용합니다.
가변 슬라이스는 단순히 기존 데이터의 일부분에 대한 접근을 변경 가능하게 만들어 주는 것이지,
컬렉션의 구조 자체를 변경하거나 메모리를 확장하지는 않습니다.
문자열 유형
String
- 확장 가능하며, 힙에 할당된 문자열 (UTF-8 인코딩)
str
- 메모리(스택, 힙, 또는 정적 메모리) 어딘가에 있는 UTF-8 바이트의 불변 시퀀스.
- 시퀀스의 길이가 컴파일 시에 알려져 있지 않기 때문에 참조(&str)를 통해 다룬다. -> string slice
fn main() {
// 스트링(String)
let tweet = String::from(
"This is my tweet and it's very very long."
);
// 자동 역참조 강제변환 (auto dref coercion) : String -> &str
let trimmed_tweet = trim_tweet(&tweet);
println!("{trimmed_tweet}");
// 스트링 리터럴 (string literal)
let tweet2 = "This is my tweet and it's very very long.";
let trimmed_tweet2 = trim_tweet(&tweet2);
println!("{trimmed_tweet2}");
}
// String, &str 두 타입 모두 인자로 받을 수 있다.
fn trim_tweet(tweet: &str) -> &str {
&tweet[..20]
}
배열에 슬라이스 사용하기.
fn main() {
let a = [1, 2, 3, 4, 5, 6];
let a_slice = &a[..3];
println!("{:?}", a_slice);
}
백터에 슬라이스 사용하기.
fn main() {
let vec = vec![1, 2, 3, 4, 5];
let slice = &vec[1..4]; // vec의 인덱스 1부터 3까지의 요소를 포함하는 슬라이스
println!("{:?}", slice); // 슬라이스 출력
}
'개발 > 러스트 (Rust)' 카테고리의 다른 글
Rust 기본, 구조체 (Struct) Implementation blocks (0) | 2024.08.01 |
---|---|
Rust 기본, 구조체 (Struct) (0) | 2024.07.24 |
Rust 기본, to_string() vs to_owned() (0) | 2024.07.20 |
Rust 기본 : UTF-8 문자열 (Strings) (0) | 2024.07.17 |
Rust 기본, 참조 (Borrow) (0) | 2024.07.09 |
Rust 기본, 소유권 (Ownership) (0) | 2024.07.06 |
Rust 기본, OBRM vs RAII (0) | 2024.07.06 |
Rust 기본, 주석 Comment. (0) | 2024.07.06 |