String과 str
- Rust에서
&str
은 문자열 슬라이스에 대한 (불변) 참조이다. (C++의const char*
와 유사하지만 항상 유효한 문자열을 가리킨다) String
은 문자열을 담을 수 있는 버퍼이다. (문자열을 이루는 바이트에 대한 백터(Vec)이며, 가리키고 있는 문자열은 String의 소유이다.)
String 생성
-
new 함수를 이용하여 스트링을 생성할 수 있다.
-
to_string
메소드 또는String::from()
을 사용하여 스트링 리터럴로부터 String을 생성할 수 있다. -
+
연산자나format!
매크로를 사용하여 편리하게 String 값들을 서로 접합(concatenation)할 수 있다.
포맷팅
-
아래와 같이 변수를 포맷팅하여 출력하는 여러가지 방법이 있다.
-
format()
매크로를 사용하여 포맷팅 결과를 String으로 반환받을 수 도 있다.
escape
r
을 붙이면 특수문자를 escape하기 위한 백슬래시(\
)를 적지 않아도 된다. (r"\n" == "\\n"
)- string 양쪽에
#
를 붙이면 붙인 갯수만큼 쌍따옴표를 문자열에 포함할 수 있다.
String 내부 인덱싱
- Rust String은 인덱싱을 지원하지 않는다. (
[0]
과 같이 참조할 수 없다.) - String은
Vec<u8>
을 감싼 것인데, 유니코드 스칼라 값이 저장소의 2바이트를 차지하거나 유효하지 않은 문자가 껴있는 경우에 대한 처리가 힘들기 때문에 단순 인덱싱을 불가능하게 만들었다. - 원한다면 슬라이스를 사용하거나,
.chars()
혹은.bytes()
로 interate 할 수 있다.
참고