문자열 슬라이스 타입
문자열 슬라이스 타입 (str)
문자열을 다룰 때 Rust에서 가장 자주 만나는 타입이 str인데요. str은 문자의 시퀀스를 나타내는 타입이에요. 다만 이 타입은 크기가 정해져 있지 않아서, 실제로는 참조(&str)의 형태로 주로 사용한답니다.
출처: Rust Reference
본문
str(문자열 슬라이스) 타입은 문자의 시퀀스를 나타내요. 문자열 리터럴을 만들면 그 타입이 바로 &str입니다.
#![allow(unused)]
fn main() {
let greeting1: &str = "Hello, world!";
let greeting2: &str = "你好,世界";
}
참고:
str타입의 구현에 대한 자세한 내용은 표준 라이브러리 문서에서 확인할 수 있어요.
값의 표현 방식
str 타입의 값은 [u8]과 같은 방식으로 표현됩니다. 즉 8비트 부호 없는 바이트의 슬라이스로 저장돼요.
참고: 표준 라이브러리는
str에 대해 한 가지 추가 가정을 해요.str에서 동작하는 메서드들은 그 데이터가 유효한 UTF-8임을 전제하고 보장한답니다. UTF-8이 아닌 버퍼로str메서드를 호출하면 지금이든 나중에든 정의되지 않은 동작(undefined behavior)을 일으킬 수 있어요.
크기가 정해지지 않은 타입
str은 동적 크기 타입(dynamically sized type)이에요. 그래서 &str 같은 포인터 타입을 통해서만 인스턴스화할 수 있습니다. &str의 레이아웃은 &[u8]의 레이아웃과 동일해요.