String
๊ณผ str
์ด์ ๋ฌ์คํธ์ ๋ ๊ฐ์ง ๋ฌธ์์ด ํ์ ์ ๋ํด์ ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค:
fn main() { let s1: &str = "World"; println!("s1: {s1}"); let mut s2: String = String::from("Hello "); println!("s2: {s2}"); s2.push_str(s1); println!("s2: {s2}"); let s3: &str = &s2[6..]; println!("s3: {s3}"); }
๋ฌ์คํธ ์ฉ์ด:
&str
์ ๋ฌธ์์ด ์ฌ๋ผ์ด์ค์ ๋ํ (๋ถ๋ณ) ์ฐธ์กฐ์ ๋๋ค.String
์ ๋ฌธ์์ด์ ๋ด์ ์ ์๋ ๋ฒํผ์ ๋๋ค.
-
&str
์ ๋ฌธ์์ด ์ฌ๋ผ์ด์ค์ ๋๋ค. ๋ฌธ์์ด ์ฌ๋ผ์ด์ค๋ UTF-8๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด("Hello"
)์ ํ๋ก๊ทธ๋จ ๋ฐ์ด๋๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. -
๋ฌ์คํธ์
String
ํ์ ์ ์ค์ ๋ก๋ ๋ฌธ์์ด์ ์ด๋ฃจ๋ ๋ฐ์ดํธ์ ๋ํ ๋ฐฑํฐ(Vec<u8>
)์ ๋๋ค.Vec<T>
๊ฐT
๋ฅผ ์์ ํ๊ณ ์๋ฏ์ด,String
์ด ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ฌธ์์ด์String
์ ์์ ์ ๋๋ค. -
๋ค๋ฅธ ๋ง์ ํ์ ๋ค์ฒ๋ผ
String::from
๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด๋ก๋ถํฐ ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค.String::new()
๋ ์๋ก์ด ๋น ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค.push()
์push_str()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. -
format!()
๋งคํฌ๋ก๋ ๋ณ์์ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋งคํฌ๋ก๋println!()
๋งคํฌ๋ก์ ๋์ผํ ํฌ๋งทํ ํ์์ ์ง์ํฉ๋๋ค. -
&
์ ๋ฒ์ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌString
์์&str
์ฌ๋ผ์ด์ค๋ฅผ ๋น๋ ค์ฌ ์ ์์ต๋๋ค. -
๋น์ ์ด C++ ํ๋ก๊ทธ๋๋จธ ๋ผ๋ฉด:
&str
๋ C++์const char*
์ ์ ์ฌํ์ง๋ง ํญ์ ์ ํจํ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํจ๋ค๋ ์ ์ด ๋ค๋ฆ ๋๋ค. ๋ฌ์คํธ์String
์ C++์std::string
๊ณผ ๋๋ต ๊ฑฐ์ ๋์ผํฉ๋๋ค. (์ฃผ์ ์ฐจ์ด์ : ๋ฌ์คํธ์String
์ UTF-8 ์ธ์ฝ๋ฉ ๋ฐ์ดํธ๋ง ํฌํจํ ์ ์์ผ๋ฉฐ ์์ ๋ฌธ์์ด ์ต์ ํ(small-string optimization)๋ ๊ตฌํํ์ง ์์ต๋๋ค.