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)을 지켜야 해요.

더 알아보기 (Learn more)