저장 단위
실제 메모리는 UTF-8 바이트 배열이다. 한 글자가 여러 바이트를 차지할 수 있다.
러스트 문자열은 바이트 저장소, 유니코드 문자, 사람이 보는 글자 단위가 서로 다르다는 점을 드러내도록 설계되어 있다.
실제 메모리는 UTF-8 바이트 배열이다. 한 글자가 여러 바이트를 차지할 수 있다.
chars()는 유니코드 스칼라 값을 차례대로 준다. 보이는
글자와 항상 같지는 않다.
사람이 한 글자로 보는 묶음은 별도 처리가 필요하다. 조합 문자를 고려해야 한다.
문자열 슬라이스는 유효한 UTF-8 경계에서만 잘라야 런타임 패닉을 피한다.
push_str(&str)
push(char)left + &right
String은 이동되고 오른쪽은 슬라이스로 빌려진다.
format!bytes() 또는 chars()
문자열의 n번째 바이트와 n번째 글자는 같은 질문이 아니다. 러스트는 모호한 접근을 허용하지 않는다.
잘린 범위가 UTF-8 문자 중간을 가르면 문자열로 해석할 수 없으므로 경계 검사가 필요하다.
바이트 분석인지 문자 처리인지 코드에 드러나면 비용과 결과를 같이 예측할 수 있다.