๊ฐ๋ฐํ์ Rust 1.36์ ์๊ฐํ๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค!
Rust 1.36์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฌด์์
๋๊น?
์ด์ ๋ ์์ธํ ์ค๋ช
ํฉ๋๋ค.
- ๋ง์นจ๋ด Rust 1.36์์ ์์ ๋ ํน์ฑ ๋ฏธ๋.
- ์์ ํ ๋น.
Rust 1.36๋ถํฐ ์ ์ญ ํ ๋น์(์: Vec)์ ์์กดํ๋ std์ ์ผ๋ถ )์ ํ ๋น ์์์ ์์ต๋๋ค. ์ด์ std๋ ์ด๋ฌํ ๋ถ๋ถ์ ๋ค์ ๋ด๋ณด๋ ๋๋ค. ์ด์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ. - ์ด์ฉ๋ฉด๋จ์ mem::uninitialized ๋์ .
์ด์ ๋ฆด๋ฆฌ์ค์์๋ mem::uninitialized๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ ํ์ธ์ ์ฐํํ ์ ์์๊ณ ๊ฒ์ผ๋ฅธ ๋ฐฐ์ด ํ ๋น์ ์ฌ์ฉ๋์์ง๋ง ์ด ํจ์๋ ๋งค์ฐ ์ํํฉ๋๋ค(๋), MaybeUninit ์ ํ์ด ์์ ํ๋์์ต๋๋ค. , ๋ ์์ ํฉ๋๋ค.
์, MaybeUninit ์ดํ๋ก ๋ ์์ ํ ๋์์ด๋ผ๋ฉด Rust 1.38๋ถํฐ mem::uninitialized๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
์ด๊ธฐํ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด Alexis Beingessner์ ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ฝ์ด๋ณด์ธ์. - Rust 2015์ฉ NLL.
๊ณต์ง์ฌํญ์์ ๋ น 1.31.0 ๊ฐ๋ฐ์๋ค์ ๋น๋ฆผ ๊ฒ์ฌ๊ธฐ๋ฅผ ๋์ฑ ์ค๋งํธํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ผ๋ก ๋ง๋๋ ์ธ์ด ๊ฐ์ ์ฌํญ์ธ NLL(Non-Lexical Lifetime)์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ์:
fn ๋ฉ์ธ() {
mut x = 5๋ก ๋ก๋๋ค.
y = &x;
z = &mut x; // 1.31.0 ์ด์ ์๋ ํ์ฉ๋์ง ์์์ต๋๋ค.
}1.31.0์์ NLL์ ๊ฐ๋ฐ์๊ฐ Rust 2018์์ ์ง์์ ์ถ๊ฐํ ๊ฒ์ด๋ผ๋ ์ฝ์๊ณผ ํจ๊ป Rust 2015์์๋ง ์๋ํ์ต๋๋ค.
NLL์ ๋ํด ๋ ์๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ์์ ๋ ๋ง์ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค. ๋ธ๋ก๊ทธ ํญ๋ชฉ (ํ ๋ฆญ์ค ํด๋ก์ค). - Cargo์ ์๋ก์ด ํ๋๊ทธ๋ -ofline์
๋๋ค.
Rust 1.36์์๋ Cargo์ ์๋ก์ด ํ๋๊ทธ๊ฐ ์์ ํ๋์์ต๋๋ค. --offline ํ๋๊ทธ๋ Cargo๊ฐ ๋์ค์ ์คํ๋ผ์ธ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ก์ปฌ๋ก ์บ์๋ ์ข ์์ฑ์ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค. ํ์ํ ์ข ์์ฑ์ ์คํ๋ผ์ธ์์ ์ฌ์ฉํ ์ ์๊ณ ์ธํฐ๋ท์ด ์ฌ์ ํ ํ์ํ ๊ฒฝ์ฐ Cargo๋ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ์ข ์์ฑ์ ์ฌ์ ๋ค์ด๋ก๋ํ๋ ค๋ฉด ๋ชจ๋ ์ข ์์ฑ์ ๋ค์ด๋ก๋ํ๋ ํ๋ฌผ ๊ฐ์ ธ์ค๊ธฐ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์ฌ๊ธฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์์ธํ ๊ฐ์๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
- dbg!() ๋งคํฌ๋ก๋ ์ด์ ์ฌ๋ฌ ์ธ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด์ ์ฌ๋ฌ API๊ฐ const๋ก ํ์๋ฉ๋๋ค.
- ์์ ํ๋ ์๋ก์ด API:
- ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ค๋ฅธ ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์.
๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ ๋ น, ๋ฑ์ง ะธ ํด๋ฆฌ ํผ.
์ถ์ฒ : linux.org.ru