slice safety
슬라이스는 원본 컬렉션의 일부를 안전하게 빌린다
first_word가 usize 대신 &str을 반환하면 인덱스와 문자열 상태가 어긋나는 문제를 타입 시스템이 막아 줍니다.
Range
Range
&s[0..5]는 시작 위치와 길이를 가진 문자열 일부 참조입니다.
&str
&str
문자열 리터럴과 String 일부를 같은 API로 받을 수 있는 슬라이스 타입입니다.
Borrow rule
Borrow rule
슬라이스가 살아 있는 동안 원본을 clear처럼 가변 변경할 수 없습니다.
Generic slice
Generic slice
배열도 &[i32]처럼 일부 범위를 소유권 없이 참조할 수 있습니다.
인덱스 문제
usize만 반환하면 원본 문자열이 바뀌었을 때 의미가 사라질 수 있습니다.
문자 경계
UTF-8 문자열은 바이트 중간을 자르면 런타임 오류가 날 수 있습니다.
API 개선
&String보다 &str을 받으면 리터럴과 String 모두를 자연스럽게 처리합니다.
슬라이스의 장점은 복사 비용이 적다는 점보다 원본과 범위의 유효성을 함께 표현한다는 데 있습니다.