Move ๋ฌธ๋ฒ
(๋ณ์์) ํ ๋น์ _์์ ๊ถ_์ ๋ณ์ ๊ฐ์ ์ด๋์ํต๋๋ค:
fn main() { let s1: String = String::from("Hello!"); let s2: String = s1; println!("s2: {s2}"); // println!("s1: {s1}"); }
s1
์s2
์ ํ ๋นํ์ฌ ์์ ๊ถ์ ์ด์ ์ํต๋๋ค.s1
์ ์ค์ฝํ๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ฌด ์ผ๋ ์์ต๋๋ค: ์๋ํ๋ฉดs1
์ ์๋ฌด๋ฐ ์์ ๊ถ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.s2
์ ์ค์ฝํ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฌธ์์ด ๋ฐ์ดํฐ๋ ํด์ ๋ฉ๋๋ค.- ๊ฐ(๋ฐ์ดํฐ)์ ์์ ๊ถ์ ๊ฐ๋ ๋ณ์๋ ํญ์ ๋จ ํ๋ ์ ๋๋ค.
-
์ด๋ C++๊ณผ ์ ๋ฐ๋ ์์ ์ค๋ช ํ์ธ์. C++์์๋ ๋ณต์ฌ๊ฐ ๊ธฐ๋ณธ์ด๊ณ ,
std::move
๋ฅผ ์ด์ฉํด์ผ๋ง (๊ทธ๋ฆฌ๊ณ ์ด๋ ์์ฑ์๊ฐ ์ ์๋์ด ์์ด์ผ๋ง!) ์์ ๊ถ ์ด์ ์ด ๋ฉ๋๋ค. -
์ค์ ๋ก ์ด๋๋๋ ๊ฒ์ ์์ ๊ถ์ผ ๋ฟ์ ๋๋ค. ๋จธ์ ์ฝ๋ ๋ ๋ฒจ์์ ๋ฐ์ดํฐ ๋ณต์ฌ๊ฐ ์ผ์ด๋ ์ง ๋ง ์ง์ ๋ํ ๊ฒ์ ์ปดํ์ผ๋ฌ ๋ด๋ถ์์ ์ผ์ด๋๋ ์ต์ ํ ๋ฌธ์ ์ ๋๋ค. ์ด๋ฐ ๋ณต์ฌ๋ ์ต์ ํ ๊ณผ์ ์์ ์ ๊ฑฐ๊ฐ ๋ฉ๋๋ค.
-
์ ์์ ๊ฐ์ ๊ฐ๋จํ ๊ฐ๋ค์
Copy
(๋ค์ ์ค๋ช ํฉ๋๋ค)๋ก ๋งํน๋ ์ ์์ต๋๋ค. -
๋ฌ์คํธ์์๋ ๋ณต์ฌํ ๋์๋ ๋ช ์์ ์ผ๋ก
clone
์ ์ฌ์ฉํฉ๋๋ค.