2.1.4 러스트에서 문자열 다루기
러스트에서 String(http://mng.bz/M0w7)과 &str(https://doc.rust-lang.org/std/primitive.str.html)의 주요 차이점은 문자열 크기의 조정 여부이다. 문자열(String)은 벡터로 구현되는 바이트 모음이다. 다음 소스 코드에서 정의를 살펴볼 수 있다.
코드 2-6 표준 라이브러리의 String 정의(https://doc.rust-lang.org/src/alloc/string.rs.html#365-367)
pub struct String {
vec: Vec<u8>,
}
문자열은 String::from("popcorn"); 같은 방식으로 만들어지며, 만든 후에 변경할 수 있다. String은 벡터를 기반으로 하기 때문에 원하는 대로 벡터에 u8 값을 제거하고 삽입할 수 있다.
&str(문자열 리터럴)은 수정할 수 없는 u8 값(텍스트)의 표현이다. 주어진 문자열에 대한 고정 크기를 가진 표현이라고 할 수 있다. 다음 절에서 러스트의 소유권 개념을 설명하겠지만, 중요한 점은 String을 가진다면 메모리의 조각을 ‘소유’하고 수정할 수 있다는 점이다.