UTF-8

문자열은 바이트, char, 문자소 클러스터 세 층으로 읽힌다

Rust가 문자열 인덱싱을 막는 이유는 한 글자처럼 보여도 저장 단위와 사용자 인식 단위가 다를 수 있기 때문이다.

bytesu8 시퀀스

저장 단위

charsUnicode scalar

char 반복

grapheme사용자 인식 글자

외부 crate 필요

구분의미판단
s.len()바이트 길이글자 수 아님
s.chars()char 단위 반복문자소와 다를 수 있음
슬라이스UTF-8 경계 필요잘못 자르면 panic

핵심 문자열 처리는 “몇 번째 글자”가 어떤 단위를 뜻하는지 먼저 고르는 것이다.