슬라이스 타입
슬라이스 타입 (Slice Types)
같은 타입의 요소를 연속적으로 담은 데이터를 "보는" 관점(view)이 필요할 때가 많아요. 이번 장에서는 그런 슬라이스 타입이 무엇이고, 어떤 포인터 타입들과 함께 쓰이는지 살펴볼게요.
출처: Rust Reference
본문
SliceType → [ Type ]
슬라이스는 타입 T의 요소 시퀀스에 대한 '뷰(view)'를 나타내는 동적 크기 타입이에요. 슬라이스 타입은 [T]로 써요.
슬라이스 타입은 일반적으로 포인터 타입을 통해 사용돼요. 예를 들어:
&[T]— '공유 슬라이스(shared slice)'라고 부르고, 흔히 그냥 '슬라이스'라고 해요. 가리키는 데이터를 소유하지 않고 대여해요.&mut [T]— '가변 슬라이스(mutable slice)'. 가리키는 데이터를 가변적으로 대여해요.Box<[T]>— '박스된 슬라이스(boxed slice)'.
예시:
#![allow(unused)]
fn main() {
// A heap-allocated array, coerced to a slice
let boxed_array: Box<[i32]> = Box::new([1, 2, 3]);
// A (shared) slice into an array
let slice: &[i32] = &boxed_array[..];
}
슬라이스의 모든 요소는 항상 초기화되어 있고, 슬라이스에 대한 접근은 안전한 메서드와 연산자에서 항상 경계 검사(bounds-checked) 를 거쳐요.
더 알아보기 (Learn more)
- 슬라이스가 왜 동적 크기 타입인지는 동적 크기 타입 챕터를 참고해요.
- 슬라이스를 다루는 메서드(인덱싱, 반복, 슬라이싱)는 std의 slice 문서에서 확인할 수 있어요.