SliceIndex — 슬라이스/배열 인덱싱 트레짓
SliceIndex — 슬라이스/배열 인덱싱 트레짓
SliceIndex는 슬라이스 또는 배열에 대한 인덱싱 연산을 수행하는 트레잇이에요.
출처: Rust 공식 문서
본문
pub unsafe trait SliceIndex<T>
where
T: ?Sized,
{
type Output: ?Sized;
// 필수 메서드
fn get(self, slice: &T) -> Option<&Self::Output>;
fn get_mut(self, slice: &mut T) -> Option<&mut Self::Output>;
unsafe fn get_unchecked(self, slice: *const T) -> *const Self::Output;
unsafe fn get_unchecked_mut(self, slice: *mut T) -> *mut Self::Output;
fn index(self, slice: &T) -> &Self::Output;
fn index_mut(self, slice: &mut T) -> &mut Self::Output;
}
연관 타입
// 인덱싱 결과 타입
type Output: ?Sized;
슬라이스 인덱싱은 usize(단일 요소), Range, RangeFrom, RangeTo, RangeInclusive, RangeFull, RangeToInclusive, (Bound, Bound) 등 다양한 인덱스 타입을 지원해요. slice[i] 구문은 이 트레잇의 index 메서드로 컴파일돼요.
이 트레잇은 unsafe 트레잇이므로, 직접 구현할 때는 안전성 불변식(invariant)을 지켜야 해요.