
84
이펙티브 러스트
트레이트 객체가 있다.
슬라이스
첫 번째 팻 포인터 타입인
슬라이스
slice
는 연속된 값 집합을 표현하며, 소유권이 없는 단순 포인
터에 길이 필드가 추가되어 크기가 단순 포인터의 두 배가 된다(
64
비트 플랫폼의 경우,
16
바
이트 ). 슬라이스 타입은
[
T
]
에 대한 레퍼런스인
&[
T
]
로 표기하는데,
T
타입 값이 연속적으로
모여 있음을 나타내는 개념 타입
notional
type
이다.
이런 개념 타입 (
[
T
]
)은 인스턴스화할 수 없는 대신, 이를 구현한 두 컨테이너가 제공된다. 첫
번째 컨테이너는 연달아 저장된 값의 묶음인 배열
array
로, 크기는 컴파일 타임에 정해진다. 즉,
다섯 개의 값으로 만든 배열은 항상 다섯 개의 값만 가진다. 따라서 슬라이스는 배열의 부분 집
합이라고 볼 수 있다(그림
1
-
4
).
let array: [u64; 5] = [0, 1, 2, 3, 4];
let slice = &array[1..3];
스택
slice
array
그림
1-4
스택 배열을 가리키는 스택 슬라이스
두 번째 컨테이너는
Vec
<
T
>
다. 벡터는 배열과 마찬가지로 값이 연달아 저장되지만,
Vec
에 담긴