RUST
https://youtu.be/m76sRj2VgGo
pointer
1. reference
๋จ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค (๊ฐ์ ๋น๋ ค์ด)
2. smart pointer
pointer ์ฒ๋ผ ํ๋ํ๋ ๋ฐ์ดํฐ ์คํธ๋ญ์ณ์ด๋ฉฐ ์ถ๊ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ, ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค. ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. String, Vector๊ฐ ์ค๋งํธ ํฌ์ธํฐ์ ์ข ๋ฅ์ด๋ค
๋ณดํต deref, drop trait์ implementing ํ๋ค
์ ํ๋ฆฐ ์ฝ๋
์ ๋ง๋ ์ฝ๋ ์์ฑ์ค
https://youtu.be/dYEC6NElVOg
์ ๋ง๋ ์ฝ๋
์ ํ๋ฆฐ์ฝ๋ (๋ง์ง๋ง ๋ถ๋ถ)
์ ๋ง๋ ์ฝ๋
Deref
์ ํ๋ฆฐ ์ฝ๋ Deref trait์ implement ํด์ผ ํ๋ค
์ ์ค์ ๋ก ์๋ํ๋ ๋ด์ฉ์ ์์ธํ๊ฒ ๋ณด์ฌ์ค. ์ฌ์ค ์ปดํ์ผ๋ฌ๊ฐ ์ค์ฌ์ *y ๋ง์ผ๋ก๋ ์๋ํ๊ฒ ๋์์ค๋ค
&String => &str ๋ก ์๋ ๋ณํ๋๋ค. deref coercian ์ด๋ผ๊ณ ํ๊ณ ๊ท์น์ ์๋์ ๊ฐ๋ค. mutable type์ derefํ๋ ค๋ ๊ฒฝ์ฐ๋ DerefMut์ ์ฌ์ฉํ๋ค
Drop
https://youtu.be/RPWZcTYBS4k
smart pointer ๋ Deref , Drop trait์ implement ํด์ผํ๋ค.
์๋๋ Drop trait implementingํ๋ ๋ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
์๋์ ๊ฐ์ด smart pointer struct๋ฅผ ํตํด drop์ ํธ์ถํ๋ ๊ฒ์ ๊ธ์งย
standard library์ drop์ ํตํด memory์์ ์์ ๋ ๊ฒ์ ๊ฐ
Rc
https://youtu.be/M9Owp3iLigg
์๋ ํ๋ฒ a์ ์ค๋์ฝ์ด Box::new()์ ์ ๋ฌ๋์๋๋ฐ ๋ฐ์์ ๋ ์ฌ์ฉํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์ฝ๋
์๋ ์ฌ๋ฐ๋ฅธ ์ฝ๋
์๋ ์ฝ๊ฐ ๋ณํ๋ ํํ๋ก ๋๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ค
์๋๋ ๊ฒฐ๊ณผ
interior mutability
https://youtu.be/77aRH6YBKyY
์์์ &mut a;๊ฐ ์๋ชป๋ ์ด์ ๋ ์ ์ด์ a๋ immutable์ด๊ธฐ ๋๋ฌธ์ด๋ค
์์์*d = 20;์ด ์๋ชป๋ ์ด์ ๋ ์ ์ด์ &mut์ผ๋ก ํ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค












