슬라이스는 컬렉션의 연속된 조각 으로의 참조야 — 전체도 아니고, 복사본도 아니고, 그 일부로의 빌린 창문일 뿐이야.
문자열 슬라이스
&str 은 문자열 슬라이스야: 문자열 데이터로의 빌린 view. &s[0..5] 는 String 의 첫 5바이트를 빌려. "hello" 같은 문자열 리터럴 자체가 &str 이야 — 컴파일된 바이너리를 가리키는 슬라이스. 이게 함수가 &str 을 받아야 하는 더 깊은 이유야: 리터럴이랑 빌린 String 둘 다 받거든.
배열과 벡터 슬라이스
같은 아이디어가 어떤 시퀀스에도 통해. &v[1..3] 은 벡터로의 창문을 빌려 — &[T] 타입 슬라이스. 슬라이스는 시작과 길이를 알아; 원소를 소유하지 않으니 가리키는 컬렉션보다 오래 못 살아. borrow checker 가 그걸 보장하고.
&String, &Vec 말고 &str, &[T] 를 받아. 슬라이스 형태가 더 일반적이야: `&str` 파라미터는 리터럴, 풀 String, 부분 문자열을 다 받아. 관용적 Rust 시그니처는 소유-컬렉션 참조 말고 슬라이스를 빌려.왜 여기선 슬라이스가 안전하고 C 에선 위험하냐
C 에선 배열로의 포인터+길이가 터질 날만 기다리는 버그야 — 배열을 해제하면 포인터가 dangle 해. Rust 에선 슬라이스가 컬렉션을 빌리니까, borrow checker 가 슬라이스가 살아있는 동안 컬렉션이 drop 되거나 수정되게 안 둬. 같은 성능, 위험은 0.