문자열은 바이트, char, 문자소 클러스터 세 층으로 읽힌다
Rust가 문자열 인덱싱을 막는 이유는 한 글자처럼 보여도 저장 단위와 사용자 인식 단위가 다를 수 있기 때문이다.
저장 단위
char 반복
외부 crate 필요
| 구분 | 의미 | 판단 |
|---|---|---|
| s.len() | 바이트 길이 | 글자 수 아님 |
| s.chars() | char 단위 반복 | 문자소와 다를 수 있음 |
| 슬라이스 | UTF-8 경계 필요 | 잘못 자르면 panic |
핵심 문자열 처리는 “몇 번째 글자”가 어떤 단위를 뜻하는지 먼저 고르는 것이다.